{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import math, random\n",
    "\n",
    "import gym\n",
    "import numpy as np\n",
    "\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.optim as optim\n",
    "import torch.autograd as autograd \n",
    "import torch.nn.functional as F\n",
    "\n",
    "from common.replay_buffer import PrioritizedReplayBuffer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.display import clear_output\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3>Use Cuda</h3>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "USE_CUDA = torch.cuda.is_available()\n",
    "Variable = lambda *args, **kwargs: autograd.Variable(*args, **kwargs).cuda() if USE_CUDA else autograd.Variable(*args, **kwargs)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h2>Cart Pole Environment</h2>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[33mWARN: gym.spaces.Box autodetected dtype as <type 'numpy.float32'>. Please provide explicit dtype.\u001b[0m\n"
     ]
    }
   ],
   "source": [
    "env_id = \"CartPole-v0\"\n",
    "env = gym.make(env_id)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h2> Noisy Networks for Exploration</h2>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p>https://arxiv.org/abs/1706.10295</p>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "class NoisyLinear(nn.Module):\n",
    "    def __init__(self, in_features, out_features, std_init=0.4):\n",
    "        super(NoisyLinear, self).__init__()\n",
    "        \n",
    "        self.in_features  = in_features\n",
    "        self.out_features = out_features\n",
    "        self.std_init     = std_init\n",
    "        \n",
    "        self.weight_mu    = nn.Parameter(torch.FloatTensor(out_features, in_features))\n",
    "        self.weight_sigma = nn.Parameter(torch.FloatTensor(out_features, in_features))\n",
    "        self.register_buffer('weight_epsilon', torch.FloatTensor(out_features, in_features))\n",
    "        \n",
    "        self.bias_mu    = nn.Parameter(torch.FloatTensor(out_features))\n",
    "        self.bias_sigma = nn.Parameter(torch.FloatTensor(out_features))\n",
    "        self.register_buffer('bias_epsilon', torch.FloatTensor(out_features))\n",
    "        \n",
    "        self.reset_parameters()\n",
    "        self.reset_noise()\n",
    "    \n",
    "    def forward(self, x):\n",
    "        if self.training: \n",
    "            weight = self.weight_mu + self.weight_sigma.mul(Variable(self.weight_epsilon))\n",
    "            bias   = self.bias_mu   + self.bias_sigma.mul(Variable(self.bias_epsilon))\n",
    "        else:\n",
    "            weight = self.weight_mu\n",
    "            bias   = self.bias_mu\n",
    "        \n",
    "        return F.linear(x, weight, bias)\n",
    "    \n",
    "    def reset_parameters(self):\n",
    "        mu_range = 1 / math.sqrt(self.weight_mu.size(1))\n",
    "        \n",
    "        self.weight_mu.data.uniform_(-mu_range, mu_range)\n",
    "        self.weight_sigma.data.fill_(self.std_init / math.sqrt(self.weight_sigma.size(1)))\n",
    "        \n",
    "        self.bias_mu.data.uniform_(-mu_range, mu_range)\n",
    "        self.bias_sigma.data.fill_(self.std_init / math.sqrt(self.bias_sigma.size(0)))\n",
    "    \n",
    "    def reset_noise(self):\n",
    "        epsilon_in  = self._scale_noise(self.in_features)\n",
    "        epsilon_out = self._scale_noise(self.out_features)\n",
    "        \n",
    "        self.weight_epsilon.copy_(epsilon_out.ger(epsilon_in))\n",
    "        self.bias_epsilon.copy_(self._scale_noise(self.out_features))\n",
    "    \n",
    "    def _scale_noise(self, size):\n",
    "        x = torch.randn(size)\n",
    "        x = x.sign().mul(x.abs().sqrt())\n",
    "        return x"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3>Noisy DQN</h3>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "class NoisyDQN(nn.Module):\n",
    "    def __init__(self, num_inputs, num_actions):\n",
    "        super(NoisyDQN, self).__init__()\n",
    "        \n",
    "        self.linear =  nn.Linear(env.observation_space.shape[0], 128)\n",
    "        self.noisy1 = NoisyLinear(128, 128)\n",
    "        self.noisy2 = NoisyLinear(128, env.action_space.n)\n",
    "        \n",
    "    def forward(self, x):\n",
    "        x = F.relu(self.linear(x))\n",
    "        x = F.relu(self.noisy1(x))\n",
    "        x = self.noisy2(x)\n",
    "        return x\n",
    "    \n",
    "    def act(self, state):\n",
    "        state   = Variable(torch.FloatTensor(state).unsqueeze(0), volatile=True)\n",
    "        q_value = self.forward(state)\n",
    "        action  = q_value.max(1)[1].data[0]\n",
    "        return action\n",
    "    \n",
    "    def reset_noise(self):\n",
    "        self.noisy1.reset_noise()\n",
    "        self.noisy2.reset_noise()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "current_model = NoisyDQN(env.observation_space.shape[0], env.action_space.n)\n",
    "target_model  = NoisyDQN(env.observation_space.shape[0], env.action_space.n)\n",
    "\n",
    "if USE_CUDA:\n",
    "    current_model = current_model.cuda()\n",
    "    target_model  = target_model.cuda()\n",
    "    \n",
    "optimizer = optim.Adam(current_model.parameters(), lr=0.0001)\n",
    "\n",
    "beta_start = 0.4\n",
    "beta_frames = 1000 \n",
    "beta_by_frame = lambda frame_idx: min(1.0, beta_start + frame_idx * (1.0 - beta_start) / beta_frames)\n",
    "\n",
    "replay_buffer = PrioritizedReplayBuffer(10000, alpha=0.6)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3>Synchronize current policy net and target net</h3>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "def update_target(current_model, target_model):\n",
    "    target_model.load_state_dict(current_model.state_dict())\n",
    "    \n",
    "update_target(current_model, target_model)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h2>Computing Temporal Difference Loss</h2>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "def compute_td_loss(batch_size, beta):\n",
    "    state, action, reward, next_state, done, weights, indices = replay_buffer.sample(batch_size, beta) \n",
    "\n",
    "    state      = Variable(torch.FloatTensor(np.float32(state)))\n",
    "    next_state = Variable(torch.FloatTensor(np.float32(next_state)))\n",
    "    action     = Variable(torch.LongTensor(action))\n",
    "    reward     = Variable(torch.FloatTensor(reward))\n",
    "    done       = Variable(torch.FloatTensor(np.float32(done)))\n",
    "    weights    = Variable(torch.FloatTensor(weights))\n",
    "\n",
    "    q_values      = current_model(state)\n",
    "    next_q_values = target_model(next_state)\n",
    "\n",
    "    q_value          = q_values.gather(1, action.unsqueeze(1)).squeeze(1)\n",
    "    next_q_value     = next_q_values.max(1)[0]\n",
    "    expected_q_value = reward + gamma * next_q_value * (1 - done)\n",
    "    \n",
    "    loss  = (q_value - expected_q_value.detach()).pow(2) * weights\n",
    "    prios = loss + 1e-5\n",
    "    loss  = loss.mean()\n",
    "        \n",
    "    optimizer.zero_grad()\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "    \n",
    "    replay_buffer.update_priorities(indices, prios.data.cpu().numpy())\n",
    "    current_model.reset_noise()\n",
    "    target_model.reset_noise()\n",
    "    \n",
    "    return loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot(frame_idx, rewards, losses):\n",
    "    clear_output(True)\n",
    "    plt.figure(figsize=(20,5))\n",
    "    plt.subplot(131)\n",
    "    plt.title('frame %s. reward: %s' % (frame_idx, np.mean(rewards[-10:])))\n",
    "    plt.plot(rewards)\n",
    "    plt.subplot(132)\n",
    "    plt.title('loss')\n",
    "    plt.plot(losses)\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h2>Training</h2>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n4P8BvUXcv81fRdAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fc3195d21d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_frames = 10000\n",
    "batch_size = 32\n",
    "gamma      = 0.99\n",
    "\n",
    "losses = []\n",
    "all_rewards = []\n",
    "episode_reward = 0\n",
    "\n",
    "state = env.reset()\n",
    "for frame_idx in range(1, num_frames + 1):\n",
    "    action = current_model.act(state)\n",
    "    \n",
    "    next_state, reward, done, _ = env.step(action)\n",
    "    replay_buffer.push(state, action, reward, next_state, done)\n",
    "    \n",
    "    state = next_state\n",
    "    episode_reward += reward\n",
    "    \n",
    "    if done:\n",
    "        state = env.reset()\n",
    "        all_rewards.append(episode_reward)\n",
    "        episode_reward = 0\n",
    "        \n",
    "    if len(replay_buffer) > batch_size:\n",
    "        beta = beta_by_frame(frame_idx)\n",
    "        loss = compute_td_loss(batch_size, beta)\n",
    "        losses.append(loss.data[0])\n",
    "        \n",
    "    if frame_idx % 200 == 0:\n",
    "        plot(frame_idx, all_rewards, losses)\n",
    "        \n",
    "    if frame_idx % 1000 == 0:\n",
    "        update_target(current_model, target_model)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p><hr></p>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h1>Atari Environment</h1>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "from common.wrappers import make_atari, wrap_deepmind, wrap_pytorch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "env_id = \"PongNoFrameskip-v4\"\n",
    "env    = make_atari(env_id)\n",
    "env    = wrap_deepmind(env)\n",
    "env    = wrap_pytorch(env)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "class NoisyCnnDQN(nn.Module):\n",
    "    def __init__(self, input_shape, num_actions):\n",
    "        super(NoisyCnnDQN, self).__init__()\n",
    "        \n",
    "        self.input_shape = input_shape\n",
    "        self.num_actions = num_actions\n",
    "        \n",
    "        self.features = nn.Sequential(\n",
    "            nn.Conv2d(input_shape[0], 32, kernel_size=8, stride=4),\n",
    "            nn.ReLU(),\n",
    "            nn.Conv2d(32, 64, kernel_size=4, stride=2),\n",
    "            nn.ReLU(),\n",
    "            nn.Conv2d(64, 64, kernel_size=3, stride=1),\n",
    "            nn.ReLU()\n",
    "        )\n",
    "        \n",
    "        self.noisy1 = NoisyLinear(self.feature_size(), 512)\n",
    "        self.noisy2 = NoisyLinear(512, env.action_space.n)\n",
    "        \n",
    "    def forward(self, x):\n",
    "        batch_size = x.size(0)\n",
    "        \n",
    "        x = x / 255.\n",
    "        x = self.features(x)\n",
    "        x = x.view(batch_size, -1)\n",
    "        \n",
    "        x = F.relu(self.noisy1(x))\n",
    "        x = self.noisy2(x)\n",
    "        return x\n",
    "    \n",
    "    def reset_noise(self):\n",
    "        self.noisy1.reset_noise()\n",
    "        self.noisy2.reset_noise()\n",
    "        \n",
    "    def feature_size(self):\n",
    "        return self.features(autograd.Variable(torch.zeros(1, *self.input_shape))).view(1, -1).size(1)\n",
    "    \n",
    "    def act(self, state):\n",
    "        state   = Variable(torch.FloatTensor(np.float32(state)).unsqueeze(0), volatile=True)\n",
    "        q_value = self.forward(state)\n",
    "        action  = q_value.max(1)[1].data[0]\n",
    "        return action"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "current_model = NoisyCnnDQN(env.observation_space.shape, env.action_space.n)\n",
    "target_model  = NoisyCnnDQN(env.observation_space.shape, env.action_space.n)\n",
    "\n",
    "if USE_CUDA:\n",
    "    current_model = current_model.cuda()\n",
    "    target_model  = target_model.cuda()\n",
    "    \n",
    "optimizer = optim.Adam(current_model.parameters(), lr=0.0001)\n",
    "\n",
    "beta_start = 0.4\n",
    "beta_frames = 100000\n",
    "beta_by_frame = lambda frame_idx: min(1.0, beta_start + frame_idx * (1.0 - beta_start) / beta_frames)\n",
    "\n",
    "replay_buffer = PrioritizedReplayBuffer(10000, alpha=0.6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fb6e0ac8690>]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb6e0885990>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot([beta_by_frame(i) for i in range(1000000)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAwQAAAE/CAYAAAD42QSlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXeYZFWZ/7/vvVUdprunJ8/0ZBiGMKBEAQHJK0nBvKiY\nVkVU1nXVn4uuaXUDq7trWAPiyiqoqCu4oLKgICggwSEzxGEGmByZTtNdXVX3/P6499w699S9FXqq\nuqq6v5/nmafrpnNP3arpfr/nTaKUAiGEEEIIIWRq4jR6AoQQQgghhJDGQUFACCGEEELIFIaCgBBC\nCCGEkCkMBQEhhBBCCCFTGAoCQgghhBBCpjAUBIQQQgghhExhKAhaHBE5SEQeFpFBEflIo+dDmhcR\nWS4iSkRSjZ4LIYQ0MyLyvIic2eh5EDJRUBC0Pp8EcLtSqkcp9Y1GT8ZGRK4UkadFxBORd8cc/1sR\n2SoiAyJylYi0G8dmicgvRWRYRF4QkbdZ154hIk+JyF4RuV1ElhnHRET+VUR2Bf/+VUTEOL48uGZv\nMMaZ1thvC+45LCL/KyKzavpgWgARuVREVotIRkR+YB17u4gMGf/2BmLj6GrHIoQQQkhjoSBofZYB\nWJN0UETcCZxLHI8A+BCAB+0DInIWgMsAnAH/fewP4B+MU74FYAzAfABvB/AdETk0uHYOgOsBfBbA\nLACrAfzMuPZiAK8DcDiAlwN4LYAPGMevBfAQgNkA/h7AL0RkbjD2oQC+C+Adwb33Avj2eN58o1bj\na3TfzQD+EcBV9gGl1I+VUt36H/zPeB1iPudyYxFCCCGksVAQtDAi8nsApwH4ZrBKe6CI/EBEviMi\nN4nIMIDTROQ8EXkoWIXfICJfMMbQYSTvCY69JCKXiMgrRORREdkjIt+07vtXIvJkcO4t5sq8jVLq\nW0qp2wCMxhx+F4DvK6XWKKVeAvBFAO8O7tEF4I0APquUGlJK3QXgBvhGOgC8AcAapdT/KKVGAXwB\nwOEicrAx9r8rpTYqpTYB+Ddj7AMBHAXg80qpEaXUdQAeDe4H+OLjV0qpPyqlhuCLjjeISE+pz8N6\nnu8VkRcB/D7Yf7yI/Cl4no+IyKnB/tNE5DHj+t+JyJ+N7TtF5HXB68tE5LkgPOwJEXm9cd67ReRu\nEfmqiOwC8AURcUXk30Rkp4isA3BeufmbKKWuV0r9L4BdFZz+LgBXq4TW51WORQghTYGItIvI10Rk\nc/Dva9qTLSJzROTXwe/13cHvayc49ncisin4ff20iJzR2HdCSGkoCFoYpdTpAO4EcGmwUvtMcOht\nAP4JQA+AuwAMA3gngBnwjcIPaiPT4DgAKwH8JYCvwV81PxPAoQDeIiKnAICIXADg0/AN8rnB/a8d\n51s4FL4HQfMIgPkiMhvAgQByxnvSxw+Nu1YpNQxgbdLxmGvXKaUGKxz7OQCZYE6VcgqAQwCcJSKL\nAPwG/gr5LACfAHBd4JG4F8DK4A9LGr43Y6GI9IhIJ4Bj4D9jAHgOwKsA9ML3pPxIRPqMex4Hf5V+\nPvzP//0AXgPgyGCcN5kTDATGr6t4T7EEgvBkAFfv61iEENJk/D2A4wEcAd/jfCyAzwTHPg5gI/y/\nhfPh/21UInIQgEsBvEIp1QPgLADPT+y0CakOCoLJyQ1KqbuVUp5SalQpdYdS6rFg+1H4Bvwp1jVf\nCs79LXwBca1Sanuwun4nfKMSAC4B8C9KqSeVUjkA/wzgiFJeghJ0A+g3tgeCnz3BsQHr/IHgWNy1\n5Y4PAOgWERnHtfbxSviCUmpYKTUC4CIANymlbgo+g9/BD3E6Nzj+Z/gG9dHwhcjdAE6E/0foWaXU\nLgAIvCGbgzF+BuBZ+H+cNJuVUv+plMoF474FwNeUUhuUUrsB/Is5QaXU5Uqp11TxnpJ4J4A7lVLr\nazAWIYQ0E28H8MXg7+EO+Isx2lOdBdAHYJlSKquUujPwkuYBtANYJSJppdTzwcISIU0LBcHkZIO5\nISLHiZ9Au0NE+uEb9XOsa7YZr0ditruD18sAfD1wke4BsBuAAFg0jnkOAZhubPcGPwdjjunjelW/\n2uO9AIaCX9b7OnYlmJ/BMgBv1s8seG4nwf9DAgB/AHAqfFHwBwB3wBdspwTbAAAReaf4FaX0GIch\n+jlGPncAC619L1Qx/2p4J4Af1mlsQghpJAsR/d35QrAPAL4C3zP9WxFZJyKXAYBSai2Aj8IPZd0u\nIj8VkYUgpImhIJic2HHcPwFwI4AlSqleAFfAN+LHwwYAH1BKzTD+dSql/jSOsdbAd8FqDgewLVgR\nfwZASkRWWsfXxF0b5BysSDoec+3+Vk5AqbFXAGgL5lQp5mewAcA11jPrUkpdHhy3BcEfYAmCwAPz\nPfhu6NlKqRkAHkf0c7Q/9y0AlhjbS6uYf0WIyInw/zj+otZjE0JIE7AZ/qKOZmmwD0qpQaXUx5VS\n+wM4H8DHdK6AUuonSqmTgmsVgH+d2GkTUh0UBFODHgC7lVKjInIs/ByD8XIFgE9JodpPr4i8Oelk\nEWkTkQ74hmtaRDp00hX8mPP3isgqEZkJP3n3B0CYE3A9gC+KSJeInAT/F+41wbW/BHCYiLwxGP/z\nAB5RSj1ljP0xEVkUxPB/3Bj7GQAPA/h8MJ83AHgZgOuCa38M4LUi8qpAaHwJwPVWzkE1/CgY76wg\n0bdDRE4VkcXB8T8BOAh++M/9Sqk18P+IHAfgj8E5XfD/qOwInut74HsISvFzAB8RkcXB872smkmL\nSCp4ti4APW+7etG7AFxX7tlUOBYhhDQb1wL4jIjMFb+63efg/06HiLxGRA4IQlH74YcKeeL3Bzo9\nSD4ehe9l9xo0f0IqgoJgavAh+Ib1IPxfZj8f70BKqV/CX+n4qYgMwF+lPqfEJb+F/8vwBABXBq9P\nDsa6GcCXAdwO3w27Hr5hb867E8B2+F6ODwbGMoJYzjfCT559Cb4xfaFx7XcB/ArAY8G/Xwf7NBfC\nT7R9CX5s/ZuCMRHc4xL4wmA7fGP8Q/pCEblCRK4o+aAMlFIbAOhk7B3wPQb/D8H/v0D8PAi/atJY\ncNk9AF5QSm0PznkCwL8H+7fBFzB3l7n19wDcAj8v4UH4AitERD4tIv9X4vrPwP+8LoOfBzGCQjId\nAgP/LYgJF4oZu+RYhBDSpPwj/JyvR+H/LXkw2Af4hThuhR9meg+AbyulboefP3A5gJ0AtgKYB+BT\nEzttQqpDEqoEEkIIIYQQQqYA9BAQQgghhBAyhaEgIIQQQgghZApDQUAIIYQQQsgUhoKAEEIIIYSQ\nKQwFASGEEEIIIVOYpqoDPmfOHLV8+fJGT4MQQpqSBx54YKdSam6j59FI+HeCEELi2Ze/EU0lCJYv\nX47Vq1c3ehqEENKUiMgLjZ5Do+HfCUIIiWdf/kYwZIgQQgghhJApDAUBIYQQQgghUxgKAkIIIYQQ\nQqYwFASEEEIIIYRMYSgICCGEEEIImcJQEBBCCCGEEDKFoSAghBBCCCFkCkNBQAghhBBCyBSGgoAQ\nQgghhJApTFN1KiakGXlx114MjGYxks3jFctnlT3/1ie2IZ1ysDeTQ++0NHJ5hRNWzMY963bBFcHA\naBZnHboAIhJe89LwGF7YvRcDI1nMmJbG4pnTMKurDc/tGMKDL7yEsw9bAE8Ba7cPYcmsTvz+ye1Q\nAA7pm465Pe0YGcvhgHk9RXPZPjCK3z+1HV3tKZz3sj44TuGeg6NZPLNtEEcvK/+eNLuGMti0ZwQv\nXzwjsv+FXcNQClg+p6vk9UOZHP7vsS04cumM2PnGMTCaxdrtQzhq6czI/hd37cW963fhrFUL4LqC\np7YM4JgSn89oNo+HXtyDV66YDQC469mdOH7/WUi5DsZyHm56bAtWzO3Gyxb34r51u9DVnsL0jjSW\nzp4GAHhi8wDm9LRhXk9H5N6909IVvQ9CSOWsfn43Dumbjq52mimETAT8n0ZIGU7+yu3h6/v//gzM\n6+lIPHdL/wjed/Xqov2HL5mBRzbsCbf/8P9OxbLZBeP5td+8CxtfGgm395/Thd9/4lR85peP4551\nu5DJefjFAxvx8IY9eMfxy3DNvX538qWzpuHF3XsBAM9ffl7Rff/z92vDcxfO6MTRywpG9ft+uBr3\nrd+Np750NjrSbtnnAADnfuNObBvIFN3rlK/ckTgHk18+uBGfvWENjl0+Cz+/5JUV3fOd378fD2/Y\ng+f++Vy4hqD511uewm8e3YLd54zh8U39+PWjW3Dfp8/A/Onxn8/nbngcP1+9EXd84lRs6R/FRd+/\nDx85YyU+9hcH4u61O/HRnz2MWV1t+PVfn4S/vPLe8Dr9ns79xp2YMS2Nhz/3alx+85O46bGt2HPu\nGC4+eUVF74MQUhl79o7hTVfcg9MPnoer3v2KRk+HkCkBQ4YIqYKh0VzJ45sMo97kxV3Dke1Ba5yN\n1nXrdvrnD4/5542M5fFwICie3jqIA+Z14/VHLsLesXzJ+Wx8aS860v5/8017ove4b/3ucOxK2TaQ\nqfjc+Pn4c9DvqxL0+855XmR/Jutv79mbDUWR/R5NHt3YDwDYMZTB7uExAMDa7YMAgJf2+tu7h8ew\nbWA0cYw9e7ORe4+MeYnnEkLGx2jw/2vN5v4Gz4SQqcM+CwIRWSIit4vIEyKyRkT+Jtg/S0R+JyLP\nBj9nlhuLkGZDKRXZznsq4UyfLf3xxuShC3sj26PZyoxwHVY0li8Yns9uH8TimZ2Y3pFCNl/aIN3S\nP4ojlvjhPVv7443l0VzlgmBf0c9nOFO5INBYegBe8NkMZbKY290OANgxWF6wbBsYRcr1n2s2r8fw\n59OWcrDdGkMphYz1jPS3wBYphBBCSCtSCw9BDsDHlVKrABwP4MMisgrAZQBuU0qtBHBbsE1IS6FX\nhDW5MoJga4IgmGHFmesVsHLoCJlcvnDfl/Zm0dfbgbTrIGcIAlu8AMDWgVGsnNeD7vYUNu+Jn1ul\nc6kF+vnYHpJKyCeIs8HRHOZN9wWBbcwnzSEVPFj9/PR8OlJO0WfYP5LFcCYqCPS9s/nS3wdCCCGk\nFdhnQaCU2qKUejB4PQjgSQCLAFwA4IfBaT8E8Lp9vRchE4294l+Jh6A9VfzfaiwXNbpHDA9BrsQq\nv7aBx/JRg3TB9E6kXCdikNrhQyNjeezZm8WC3g4s6O1IFCuVhgyZ7yFOfFTClgHfSzE4Dg+B/exD\nD8FoDjOntQHwk6iT0GFKW/pHkXL9z0gLPO0hcB0p+sy39I8WhYrpe+fpISCEEDIJqGlSsYgsB3Ak\ngPsAzFdKbQkObQUwv5b3IlOHmx/fgqOWzcS8ng488MJL6Eg7YQjOaDaPq+5ejwPn9eDMVclfsRd2\nDeP5XXtxyoFzsXcsh5se24o3HrUoDMlRSuF/Vm/E+UcsjCTYbrHCbH6+egO2D44il1dYs3kArz28\nL1ItZ0v/CBbP7MRzO6I5AxlLEJghQzuHxmLn/NXfPRPG3OuYd01fbwc2vrQ3Ekp0+9PbsW7HMN5+\n3FLM7m7H1sA47uvtQF9vBx7duAffv2s93nPC8ogguebe5/HZ16zCjQ9vxpuOXozndgxj/c5hPLtt\nEMvmdGH9jmG86sA5YVgOADy1dRA3P74VBy3owTPbBsP9Sin8zwMbMWtaG0QATwG7hzN489FLABQ8\nBGM5D5lcHjc8vBlzutuwbHYXVsztxuOb+vG7J7bhoAU9eHLLABb0FhKEv/uH53BI33S89vCFAApG\n+WAmF4bwPPTiHtyyZivOOnQBAD9HYPtABtPaU9iweyScg05N1p4XbfDn8qroM//OHc9hpuXhqdRD\n8Ns1W3HYol50taVw+9Pb8bojF5U8nxBCCGkENRMEItIN4DoAH1VKDZglFZVSSkRi/3KKyMUALgaA\npUuX1mo6ZJIwms3jkh89iAPnd+O3f3sK3vidPwEoVH65b/1ufPnmpyP74jCr4PzzTU/iR/e+iIUz\nOnDCijkAgN8+sQ2fvO5RPLdjCJ8695Dwup1D0RCUq+95AVff80K4vWnPCP7tzYdHzp/b04750zuw\naEYn/vjsDmwbyJT0ENj30Hz9tmfD13Yy74LejqLk14///BFkch5mdbXhouOXYfewf83s7nYct98s\n3LV2J7706ydw8so56GwriJ5r79+Aa+/fAMA34D/9y8eK5nL/87vwd2cfHG5/7851uP7BTUXn/fn5\nl/DJXzxatD/nKZz3sj5k8yqsjHTjw5sj5z5/+Xn42q3P4tYnt8U+j2/f8RwAhOVTtVE+NJoLX9+1\ndifuWrsT6//lXIgIzvyPPwIATj1objjOruFMGPuvf2oPQdbzij6PGx/ZXDQXfb9SOQSZXB4XX/MA\nDpjXjXefsByf+d/HcfSymVgya1riNYQQQkgjqEmVIRFJwxcDP1ZKXR/s3iYifcHxPgDb465VSl2p\nlDpGKXXM3Llz404hUxhteL2wa2/s8YGRbOz+UujVdjM/QI9jJ6WWi3W3w3AGR3Po6UjjJ+8/Hl95\n8+G45aMnA0CYlHrt+4/3tw1BUEmC8ZAVYtPX2xGGvWi0F0KHAOnV67QruPT0lfjBe44FAAwYBnSl\n5D0Vucb2eGiSwp/W7RgOn2VfsOofl4Btr87HsSv4/LQtPpTJRXIsAF/YmAyO5nDiAbNx/P6z4HkF\nz4B+RnpueU9FwoOO3z++r0EhZCj5OW4PRNyuoQz6g+9XUtI5IYQQ0khqUWVIAHwfwJNKqf8wDt0I\n4F3B63cBuGFf70WmHjrGO8nssg3lSmgLDGl71X4849sG7FAmhx6jkU5a3yswlLva/ZV5M5G3kqRe\nuyrPgt4OpF2JPVcLjFwoCPw5dAfzGsrkEpOjZ3W1xe7P5VVoBPvb8XNOKoO6cygTPkstCOKebamS\nnxr9zPOqEP9vx/LbK/dDozl0t6fgOoK8UuH7LyQm+wZ7Nq8iIrCvtzMyTlsqmntQKmRIG/9zutvD\n91qJ4CGEEEImmlp4CE4E8A4Ap4vIw8G/cwFcDuAvRORZAGcG24RURWh4Jthd5mpupYmutpFeinJ9\nB7b0j0buO5TJobujWBDouvXTglAdM2RopAIPgSkIuttT6OlIh8apjR5PG8W6mVdPMK+h0Ry8BEHg\nxGsMZPNeZNXdXpHX6Hr+NjsGC4JgQWBk296XTC6fmE9hog1tM2TIFjj2yv1QJofu9jQc8UONdLlW\nO6kYQLia78812uSsPfg89fMrlRCujf/Z3W3h94geAkIIIc3IPucQKKXuApBgRuCMfR2fTG3Klfk0\nq9Vkcl5FHXfTqWIPgZnzYlLOQ7B3LI+B0Rx6O9NQSoUr0eG93GgfgZTjIOVIJEyokpChYWPlXa+w\np5x4QaA9DqGHwLE9BNnE55r3FLra3Mj9/PlHQ4ayCdf3J4Rw7RzKhEZxkodgu5Un0dOeiq1GpMO0\ntBAby3tFlZLs9zc4mkVPRwq7hgWeKrwXbdCbc9ljCgKr67EWYdo7Uer7qec52/AQJFV6IoQQQhpJ\nTasMEVILfvnQRuw/pxuHL5kRruSqBBeBuYI/ms1HBMHNj29Fb2e6KAxFhwx9+/a1GM3m8cSWAdwf\ndO01uX/9bvz0zxsS5ynilwXd2j+KNZv7sbV/FDlPoacjbZwjSDkSig9HBB1pF9++4zlsHRjFOYf1\nVSYIDINVr1onhQzZHgLdhEt7Lv7jd8/gH84/LPbaH9/3YpEYAHzDuZKQoS/f8nTs/me2DeHPz/vP\nWAuCX1nJuputLsPTO9OxguDa+19E2nUifQmufyia4JzPx3kIUnADD4EWS89uH8JDL74U+R6Zwsfu\nH7FreAzXP7gR+u3n8grfueM5vOGoRXhp7xj+6871aE85+ORZB4fegPaUg4ERhgwRQghpXigISNPx\ntz97BIBfdUYbZ0kLsUOZwmruSDaPGcaxS370QOw1epV3c/8o/vE3TybO4y3fvafkPFfM7cba7UPY\n0j+Cd//3n8P9ZsgQ4BvkOglXpLAaff2Dm7C1fxTnHLag5H2AQmz+q1bOwbkv64u8D5tMKAj8h6ab\ncHW1+fPaNpDBpT95MPbau9buDF9/9x1H46q71mPD7r1+yJChAZJChrTwmdvTXpSg/d93Pw8AOGhB\nj30ZgOjKPFAIcTLZb04XNuzei6/f9gxmdbVjwfSOsLzqrK62MGE856lIKJen/M9FVyfKGm/m9d/+\nE1xHMK3NDZ/zq1fNx/bBDA7pm140h4/9/BEcNN9/D89uH8TNa7bi5se34Jjls/CLBzYCAE5YMQd7\ngvCpbF6F31N6CAghhDQjNakyREi9KFfn3Qz1qLTjbptbm6/9ohl+LLxt5JlJxYCfR6CNdMcK0s97\nqmje5wd19uP4/GtX4a3H+uV5E0OGctGkYl2NyDXubYe63PnJ0yLbr141H2cdugA/+8Ar8coVc5C1\nkoqzZRpy3fLRk/GZ8wrlW3s706HnYk53O/7h/EOLrslaXofeznTROV+/8Ai8/qhF/nw8hcOX9IYl\nRWd0pvEvb3gZAP+52pWQuttTSAWCwM4xyHsKS2YWyoGeech8/O+HTwwbngHA+1+1X/haJyHrZ7pt\nIIOt/aNhUvaW/pHwu5vNeWG+BHMICCGENCMUBKSp0WEvSQnDg1bIUDmUUokr60ByNaM45vW0Q8T3\nNJh0W4KgzXXCHAJTD8ycloanVNG8S82hzS2ERCWGDIVlR3XeQvF5trHtWuekjWfUlhJk814kRCfJ\nQ6DpSDuR+y6Z5YsnET+xuiNd/BnYY8blgzgiSLtOOB/XkTBx23UkfB85zytKWu7RHgKlYoWmniNQ\n8PKYXgrze2N/5sOZHLb0j+Cg+T3oSDvY2j9qJC57oXDdMZQpEj6EEEJIo6EgIE2NNhI9FS8KTA+B\nWa0nqYqOpwqVfzRzewodeKsx1tIpB3O627F2+2Bkf1zIkDZAHSN5edHMTuQ8VVRlyCtRLck0StMJ\nwkZ7HPQqeCpGONiCwBYNphcl5fgGuPn8yz2njpQb6ZOweIa/+t7dnoIEeRQ2dtUnW6QA/nvRgsBT\nKhAIEp6v30feU0VJyzqHwPNUbA7EYsNDoEVduymM3OI5h30MMjls7R9F34wO9PV2YstAQRCM5f1k\n87aUA6WA7YPxjegIIYSQRkFBQJoaM7QlrgnU0GguDNMwV9r3JngL4saY010QBJV4GUz6ejvw0It7\nIvtsD4EpQMxiRrO72uHFhAyVKp8aEQQxIUOzutpCgZENcwiKz7NX6G3j2xQIaddBLq9g2tDlqj85\nhnEOFFbfOwMhECcIbJERVwLVDQRALggZ0h4DwBcLBQ+BKioZG9eHwMTsIKxFnVl9Ks6zZM5522AG\nfb0d6OvtCDwEhUpGg5kc9p/TBQDYsoeJxYQQQpoLCgLStHz1d8/g3nW7wu1P//KxonOGMjnM6fYF\nwUeufTjsCJzUP+DWJ7fhv+5cF9lneghM49w27G0c8QWBHRduJ8NGBIFRoTflCB7b1I+r7l4fOV8S\nq/hagiBm5b8z7RqNybzE82yvhC0a0tZ9xvJeREyVqr8fjmm8b21s6zE6YwTBN257NrIdVwrW9wI4\nyHm+UR8NGXLC95H3FAYz0STl7o4UHJFIp2JNW8oJv0dAcR6IPsfGHCfvKfT1dmJBbwe27BkJxcLw\nWB5jOQ8rg0TkyZZHICJni8jTIrJWRC6LOS4i8o3g+KMicpRx7G9FZI2IPC4i14pIh309IYSQ+kNB\nQJqWr9/2LC7/v6fC7Z+v3hg5rpTCrqGxsJvszqEM7nnOFxBDmfh6+B/68YPYNRxtfmUagqaHQDcR\nO+mAObFjffTMAzHb8C4cvWwmznt5HxbOiHa3NQ1yR4BvvPVIfOmCQ+E4Els96RNnHYQ3HLUIS40V\na40ZymMa7WcfugAXvmIJjlgyI0ym1caqufr/9QuPAACMjPnnvP7IRfj224+Ca4mGtOUhKA4ZKp9t\nYb7vUw6ci1etnIMPnroCQLyHYFvQh0CH6TgC/PPrX4Y3HLkoPMd1JDTMMzkvEjKUMnMI8gp7M1HR\n055y4Dq+4W53Mu7r7Yg82862wvw++5pVuOKio8p6CABgdlcbZnS2YWA0Fx4bDKon7T+nC0ctnREr\nhloVEXEBfAvAOQBWAXiriKyyTjsHwMrg38UAvhNcuwjARwAco5Q6DIAL4MIJmjohhBADCgLSVFTa\nbRgAdg+PYSzvYb8gFAPww3CA4i64pZhrGPUjVsOwd5+wHEcsmVF0zSWnrMCc7vbISvIVFx2Nb73t\nqKIcBXPbEcH5hy/EO165HG5CM7R5Pe34j7ccEVt20zSyzZChFfO6cPkbX46udjdMKtZhMeb9Lzhi\nEZbPnoaRMf/5/NWJ++Hcl/UV5RCY16RdB56KNiOzDWoA+NQ5B0e2TSGybHYXrnnvcXjfq/YHUByy\nZKINb9cRvO24pXjT0YsjY+pnMJrNw3UQSSo2cwh0tSWNiC8YtHehzXXwiVcfCMAXBKZHwzTa33vS\nfjj7sL7YECZbEOgO0mM5LxRNOpdhTncbrv/QiThz1fzE996CHAtgrVJqnVJqDMBPAVxgnXMBgKuV\nz70AZohIX3AsBaBTRFIApgHYDEIIIRMOBQFpKsqEpkfQoRemINBGaLkOwyZJOQSjWb/zsV0q1L+P\n/9MMK4oz4IFo6IyZVByXNGvut4+3pZxIGE06ZY7l36Mj7RplR+OrDLWlnFD4aE1RqsqQTkrOGM8m\nrsrQ9KJE5eRfL6VWydtT/jH9Xs3nnzLCgjI5LxIylHIk9HTkvOLuxQL/+XvKTyp2HQk/v77ezshz\nik16zhWLIDsXobsj5QuCvBeKBd3boFR1qxZmEQCze9/GYF/Zc5RSmwD8G4AXAWwB0K+U+m0d50oI\nISSBSfkXirQucSvPScQJAl2hJymHIA7TkDcr9IzlPXSkndiVYW3YmxWF2hMMvjZjVV+MU+KEhjm2\nfbTd8jyYBrc2ZjvTBQ+BXtGPExbajtVj2N4KM2RIh9KYdf3jqgwVe0aScyHiDG77Ov0czPk7TkGs\njOU8vxN0QpWh0ZydpCxhH4JsXiHlCrqDrtILejsi1ZgqFQT2c+huT4XfAy0EtDidpIJg3IjITPje\ng/0ALAQ+HFzQAAAgAElEQVTQJSIXJZx7sYisFpHVO3bsGNf91m4fxB1Pbx/3fAkhZDLDv1CkqahC\nD2Brv1+txRQEmsEqPARmvLj2EOifnWk3NrQnFASGhyAuCRaIGu4RD0GCvRwawFJsyEe2DQNcX9Oe\ndpHJ+fH+ec9DypGieUWvC+ZVImQo9BAYBnFclR7bE5Fyk3+9lBIE+hnp4cxnlnKciMByRcL3E8kh\n8FTEowH4j9Nx/LKjeU8h7TqGh6Aj8jnFeW/iBUH0OfR0pML5DFvfwbiypZOATQCWGNuLg32VnHMm\ngPVKqR1KqSyA6wGcEHcTpdSVSqljlFLHzJ07d1wTPfM//hjpKE4IIaQABQFpKqr1EKQciSTxjsdD\noENUgEIOwXt/6BsOSSFD2khNChMyMcNvzKGSPQTx49iCwAwZ0sa4js0fzXrIBavgpcZxE8J6olWG\ntIegdMiQfa+4hmiaUjkE2hiP8xC4IkWGu94W49iFV96Lp7dG+0M4InBFlx31Q4b057dgekfss4q+\nv/K/LrvbU+HztcPWJqmH4M8AVorIfiLSBj8p+EbrnBsBvDOoNnQ8/NCgLfBDhY4XkWniq9YzADw5\nkZMnhBDiMyn/QpHWpRoPwd6xPKa1uXAdwakH+auGOifZTigtRUfawTffdiSOXDojNHTvXbc7PBa3\nWqx3dbeni47ZtEWqDEWNW82HT1sRvhYrZEifZhuUcSvaesV7eCznh8XEGPxthgBKSmxOxYUMGSVZ\ns56HQ/qm4yOnH4CV87rD+Vxx0VH48fuOKxrDprSHwP+pp2bO0XXFElgSCiMv6Fys+Z8HolWpAP85\n6ZChtCM4etlMXHraAThp5ZyS8wWA95y4HJeedgAW9iZXxpzW5kaqIJlMRkGglMoBuBTALfCN+Z8r\npdaIyCUicklw2k0A1gFYC+B7AD4UXHsfgF8AeBDAY/D/Hl05se+AEEIIQEFAmoxqPARKqdB4ftcr\nl/v7gmPZXOns5J6OFA6c7xuynWkXr3n5QpywYjbyVpWjDiNkaMXcQmiSXt23uxLHkZRcq43XGdPS\nOGFFfGlTwO/6C0RDfeztlCUIhkZzyHlevIfADBlKWBVvi0sqNgxcpYAZnWl87NUHhSvnKUdw9mF9\nODEo01pqRd3ONzAJPQNhUnHhmB8iZCZTF96PUqVFSBgypPyQoZTroCPt4hNnHYRpbamScwIQnttV\noj+FGCFMNkn7Wx2l1E1KqQOVUiuUUv8U7LtCKXVF8FoppT4cHH+ZUmq1ce3nlVIHK6UOU0q9QynF\nNs6EENIAJudfKNKy2AZ5KRSM8Jrgpw4Zikt6NTFXkvVqtSv+6rFZ+rQj7UZC+fXruByCJOwVbXsO\nKUci++176fCaUiFDbmBshoIgk0POi/cQmMnPSR4Cu+woEA0ZAqKGOlBdyFAp7GecFCKkz9H3sT0E\nNjpkKOcpZPNe0fxKXWtSLnQoyRMwGT0EhBBCJgf8C0WainwVdUc9pYwEVP+ntuWzZTwNpiHcHhjc\netV/zBATnWk3Yijq8fWuinIIrMZk4RyM8qKljFEtWGzREFdlSHssBkdzyMUYvYCdQ1A+ZEgLArOL\nM1DoqCzWeeEYZWLyk3Asz4A5rOtYIUPGtlKl76k9BEr5gtE+t1RVJJNyC/1Jhn9SFSpCCCGk0fAv\nFGkqqhMExfH2enW/XMiQWXlHG7ZaJESr6XixRrMds1+KdEKVITM0Js4u17sKgsAaNxI6EyQ5BzkN\nQ5lcclJxTHWiojlHPAT6uRRX7TF/FvUyGGeITFh21RJ7/mvrfUuhD4GCKh0yBAk/47GcV+Q9KdU3\nIW5+SdBDQAghpNXgXyjSVFQjCJRSRQmoYQ5BmZAhQGFRUJ1Ir9xqD8HLvxDtjWQagAUj2H8xLShZ\najY3szFDe0xbMvQQuJJYcci8h1kNyZwDUOwh+M/fP4vrH9oUa5RX4iGIzD+mDwFgGu76vPGF4Njo\nZ+HECA0xBIA+V9/X85KrJunx9KWZXLGHoNL56rMSPQHG/MxqSpM1h4AQQkjrU355k5AJpCoPgYfE\nkCEzOXn57GlYNLMTd6/dFbn+q395BO54egeWB30M7NXlgxf04NQD5+FnqwtNVu2QIRHBle84Gocu\n6k2cp2sYzqYRHwoCkdhYfn3u+YcvxJmHzMfJBybXX7c9Fo9u7AcQ/zzbKxAECoXrCp2KbUEQzBPF\nsf5A1DMSx88uPj7MdfjNo1tw4yObI+Pan204runhqMJDACkIBt9DME6PRjCf9pQT9iZ4+3FL8dZj\nlwKICoVpbSmMZseK9hNCCCHNBAUBaSqqzyHwX4uxDwDGcqZB6+Dtxy2LCAKlgBnT2vC6IxeF+2zj\n+KLjl8Fx4sN5zHNffeiCkvMsrHhHBzLr7JdanV7Q24ELjliUeBwoGON2TsNotrj8aqSCUMJ9zRSM\ntqSkYstDUDSnMjH5x+0/O3w9p7vNEATR51UcimSHEPnz81TpVX6BRDwEZkO6SuZr3hPwPTaD8HsN\nHLvfLBwWiELz+XYa5VUpCAghhDQr/AtFmopKqwwppaI5BCU8BEkx+jbFSbvFhrwdMlQJYflM6xJt\nnLpJVYZQOF72HrpTccqJGPnlBEFSPLz5KYQhQ3ZSsZW/4VmfXTVJxWYXX9tDUCo3wQwZUqq0h8CR\nwpiZXL64s3KVIUNJScJRDwEFASGEkOaHf6FIUxHXATcOpXQfAn87zCGIKTvqxBjccXexDU9dXrJU\nlaFK0NcLohe5ocEb3/zMPi8ObWRqY1ZEIr0R7MpA5jXmdTamcZ9KSCoulHyNH6PSJF17TmIJqJIh\nQ44RMlTOQyAFT4yfQ2BXRaouqbg9oduymSsQEQTMISCEENKk8C8UaSrsVeYk8koFfQiiq9T6ajNk\nyHWKjUoVcx87sVevPMdWGarCQyAJoTU6nt1fuY67Tp+XfC8dkmI2GDMrH43FJFe3WSvssRiPp61c\nUnHxJQCq9BBEvBbRuRUJNWPbzCHwVHzfBY0YY2WyHtLj9BDo920+R9NjZOcQhPspCAghhDQp/AtF\nGspVd63H8st+g/69WQBArsIcgrynIjkE2niMCxlypDhGP9ZDYFns+pq4kKFypSej48RfY9qHpaoM\nVSIITGO2XCnUSurhz51eqJqUShAE+u0cvKAHADDdyl8ol1RsElf5KEkQtdl9CHSVIZXceRnwn78Z\nMpQUinTEkhmlJ6tzCIz8AHMkc35d7UYo1DirLhFCCCH1hknFpKFce/+LAICtA6PonZaGV0YQ9Ham\n0T+ShRfkENir1HGdih2RxMRXE3sBNxWu4BeHDFWhBxJzCBxrpdsm7I9QShAEISnmOaahGke5419+\n08tx2kHziuY2luAh+ML5h+L8IxbigHk9kePVlB2NW22vKIfAyAtQiAqjy9/wMjy2qR8/vu/FYODC\nWIOjuSLh5DqC6z54Ag6Y111yrvoWpofB/PjajXyIBb0dJccihBBCmgF6CEhDse3gch6CE1b4lWm0\nh8BO8g37EERChmI8BDG3KY5V1wZp8bnVGLtJK8OmCCiZQ1BBF2MzVKa9TGhKRxlBcPrB8yLbeuic\nF+8h6Ei7OGHFnKJxKu38CySEDGkPgZ3sbTVkKySUq8izuvDYpZg/vWCQixTGynkqkmuhOXrZTPR2\npkvOtZxQM3MLls6aVnIsQgghpBmgICBNga57X85DYJaY9BuTRcNLQg9BUZWh8jkESY2q4sKDqgoZ\nssSKPb7IvoQMOeEYmnLVbDrLCAI7ll7fP2slfJd7BtVUYmqPqXwUelastxPJgTAqSHlKFYkHc8sO\nHauky3Qcej7m98VMGDfnt2QmBQEhhJDmh4KANBRtSBVi/ysUBJ6KNCYLzbHg8miVoZik4pixk6rZ\nxBnk1cSDJ51r3i82SVl7P1BCEAQhQ2ZJ0HKCoCOhOo7Grraj52Z3f65lSHw0ZEj/jAoDjV1lyGxK\nZz9rc9tMKgYQ6yGohIKHoHjO9j17Okp7GwghhJBmgIKANBTbDi7Xh0CHoeRVNGSoEEceeAiMkKG4\npOI4kqrZhAnLxrFqjGG7i7J9P0FlfRLi0Kv9e8dy4b5y1WzKhQzZHgLHSRIEtVMEcaIpKYfA3DbF\nQrl8dNsT0zNOD4G+ZcoSG3FUU2mJEEIIaRQUBKSpyJfpQ6ANLM+zG5Mh2O//jIQMxXUbjrlNUqz6\nPocMBf/L7JKqpnEaZxDrPSrWn+FzfNDt10xeNT0EfTFJrVWHDOm4e+uzqTQkSFchqgSzwk/YhbrE\nfUSA2d1tAIDj958Ve7wwnkQ+4/F6CJKESvQc/+d0eggIIYS0AKwyRJoCbSuX8xDo5Fn/PKPsqJ1U\nbFUZqiTExz5H30sbkXY8eqXYcyuMXxAz1fQ1MHnvSfvhlAPnYuX8gtGtBcEhfdPxsw8cX3RNuZAh\n29DV8895fidgHdZViVfjT5edXjZJV3PX352GmdPa8IFrHvDHr9Cr09fbids/cSoWz+wsOl7UDM54\n693t4zPWYz0E1lRv+/ip2DWUwSF9PXjos38REaiEEEJIs0FBQBqKWKE++TJxH9rY9RQiZUc1YVJx\nJGSoshyCRA9BjP08nk7F9k3N+8V6CAougkREJCIGgMIzWjKzM3aFuj1V2kNgr8ib7z/tOsh5fsfi\nSkTRwhnFRnoSi60E3MpKxfon7TenK/a4+VjF+h6MO6k4THY2Jxid7H5zusI5zexqG9d9CCGEkImC\nIUOkqSgnCPSqrGc1JtN2XlxjMrFCRfzziu9TnEMQ9RCYVBcyFBU94RhmLHwNM3R1DkE6IZdAJyJX\nijk3s5RoDVMI4u9bwQ3KVzqKnmu+l55xJxWXvg8hhBDSalAQkKYgDBmKEQSmrayN3LyVQ+BYy+l2\nEy3bYIutMmQLgrAPQXHITzUGfFIMfKRTccwpYQWmiu/ko0t4JvUBKJdUbGMa3emYBmL1ohLRVe5z\nMEOGBHYFoH1LKq76gyGEEEKaFAoC0lBscy5OEJgGrFllSMV4CLzQQxAdp6IqQ3Z5S0fX+C8RzlMB\nYR8C662ZJVNrWbFHhwzZ5UM1HWXKktq4liejUNlpfPOrlFKPRHtBys3BHMP2FI03ZCj2+zCukQgh\nhJDmgIKANJSisqMxgsCsipMy+xAYjcns0p7ZvGeU9YzJIYirMmRX17E8BONNKtZ2eVJjsrh7A8BZ\nh84HUH2323LGcpJQeGVQscjGfK9mpZ5aiphy97XRoifpnMMWTY8ZL5oIPP4qQ/5PMwSs3t4SQggh\npJ4wqZg0BToZOK7KUNRDYCQVe0YTK2McpRSyeYVpbS72jvkJsLYNHFfK0zbK08F2XCx7NSFDBbFi\neS0KHbhi7/GuE5bjjUcvrrq5lZl4XQ1Xv/fYotKiQFRYuE5QsclTdfcQlBq/LeUAmfjP4ckvnh3b\nZVqMalNtrlM2uTqJuEZxlAOEEEJaGXoISEMpF+oDAO1GmcwwZMhTUFBFfQiUMYYpJCrzEES39Up6\nXJWhqkKGdCK0HTJUrg+ByLg63eocgjIVXItIu05swrGIREKzwjKs9fYQlFAE6bACVPE5nW1uKIrs\nKerPYrzeAf+e/s9qny8hhBDSrFAQkKZAewi8uByCVJyHQAVlR/39YqzC6x4E7YZRWEl4i32ONh7j\nVqHHU2XIJhUTilQL2oLnVaqhWbWYzyJu9b0elBpffw/KVSKyj+oxx5s/AJjfNXPfuIcjhBBCGg4F\nAWkoOvxCC4E4D4HZSEsb0XlPJxVHjWqlCj0I2o3kWdsoj+1DYIcM6RyCfQwZSlpJr6Tx1nhoG6eH\noBRhd17DW1D/kKHyOQRlqwwliLx9EgTBz2gOwbiHI4QQQhoOBQFpKHbIUKyHICaHIB96CKykYqiw\nK6wZI16JwWYboCknPuzEP7f8eJqkVezxdicuhxZNcb0WxkuYWC2FUKp6G8ElcwgqnIM9hn7m+xIy\nFF9liIqAEEJI60JBQJoCHTIU7yEwqwwVPAqeUoWkYi0sPCAT9CDoMOLhi1aSK6gylCphkVYTP59Q\n1KemzchMbJEVx8p53Th8cW/FY4YeAkeKRFi9MMef3pHCGQfPC7dDD0G5OSR0Xe7ZBw/BG45aBAA4\ncunMcY9BCCGENBOsMkQaSlgdKLBevdgqQ2ZSsVFlyPAQmE28hkZzAHwjUt+lKKm4gipDpUJ6qlnd\nTzKcw7nX2K4OY9xLnPO7j51S1ZiFMCEp5D7UWRCYwz/6hbMixwoegupyCGqRVHzaQfPw/OXn4f8e\n25J8I0IIIaSFoIeANBaJVuCJK3sZTSqO5hDYHgKlFIYyWQBAb2ehQs94+hCUohZJxXXzEAQ/6xEy\n5IiZVFyz4WOpJKlYJ5AnYQ+RqkEOQdzY1AOEEEJaGQoC0hSU6kOQduM8BNHGZAVBAAxqD0FEEJSf\nQzWr/tUsjid7CIKxKh+qqvvVMqk4FAFOIWyr3iFDpQSTDhkay5URBNbTDasM7YOHwBw9fMWsYkII\nIS0MBQFpCrQQyHvFBl46VTC2dKKv7yGIhrIAfijQUMYXBKaHYDxVhkpRlTeh3kvpFoWeDLVTBGaV\noYnyEJSysbUgyJQRBEVJxcGOfckh0NBDQAghZLJAQUDqyl3P7sTDG/YkHrfDW+IiQKIegiBkKKgy\nZDcm85SZQ5AOj9kruHHhNNUY7lWFDE3w6nHhmdZuTNfIG5iwxmSlyo6OM2SoFn0IwrH3eQRCCCGk\nOaAgIHXlou/fh9d96+7E42Z1ICDewGszBIEueamU7kMQjKOTihXG7yEwrMfDl8wIXy+eOQ09HSn8\n3dkHG+MlvqUi4jodx3HEkhn46JkrKx84gWP3m4WOtIP3vWr/fR5LY1YZqndjMu3ZKDX++0/eH20p\nB8ftP6vkWHbI0NyedhyxZEbNKwQxYogQQkgrwypDpCnQIUOj2XzRsTajwVihMRkiOQTa3ldQYQ5B\njxEnXskqvWm43/DhE8PXHWkXj1lVbqoqO1quEk5w/H+Ne+4Ls7vb8dSXzqnJWBr9bFyRcL71TypO\nPnbEkhl45h8reI/WGB1pt2bP2fwOsA8BIYSQVqYmHgIRuUpEtovI48a+WSLyOxF5NvjJot2kCDtk\naCRGEJghQ1oA5L1oYzI9kBd4CLra3DC8SFC8ghtbZagGpUTjSMo3qGFET91xjdCs0CtTJxtYG9e1\nCEmqp5lujk0PASG1p5Zhj4SQ0tQqZOgHAM629l0G4Dal1EoAtwXbhMSiy45mssUhQ7qqDVAwrnWV\nIW2IhQa6UhgazQVVZIqvK0VVScVVVSSqrlZ+M6LzK8yQoXrnENSiLGs9KyFRBBBSH/h/i5CJpyaC\nQCn1RwC7rd0XAPhh8PqHAF5Xi3uRyYUYK/5AfMiQ2TFYOwt0laEwqTg4rj0EdtJoJYZhNUnF1fzB\nSvQQtNDqlxuGCZkhQ/VOKt73Meo5RVYZIoQQMlmoZ1LxfKWUbuW5FcD8Ot6LtCgFQz45ZMg0PLUx\nWuhDEN2vlMJgJofujjTMoJxKjMtUnUqJls8hqHiohhHmajhilHqdmHvuC3UVBKAiIIQQMjmYkKRi\npZQSkdj1UBG5GMDFALB06dKJmA5pQvRqeZyHwDQM23X9+awX9CGwk4qB0bE8OtMFrWuXHX3Ny/vw\nlmOWlLxPOarKN0iQ3S9f3ItXrZyDT597SMVjNQrHKTxnZ4I8BLUYvq7JvhE9QEVACCGkdamnINgm\nIn1KqS0i0gdge9xJSqkrAVwJAMccc0wLBVGQWqCNvkLIUHEOgRly09PulxIdyuQiOQTaIPMUMJb3\n0JNOJYbkfPNtR8Xur6rZWA1ChjrSLq5573GVD9RAXKPKUL2TijU1SSqmnU4IIYSUpZ4hQzcCeFfw\n+l0AbqjjvUiTE9cIDDAN+eQcAtOe7mp3AfiCwPQQiFO4T87zIr0LKl29rWWi8HjHbVbMZmQTlUNQ\ni9HrmfjMKkOEEEImC7UqO3otgHsAHCQiG0XkvQAuB/AXIvIsgDODbTJFyeRKd5QtGTJkKIKU66Az\n7YYegkJjssI42ZyKVCZSFRb4rCovoKoE5Na3FgtVhjBhOQS1CRmqH9E+BIQQQkjrUpOQIaXUWxMO\nnVGL8Unrk8l66Ei7icfDxmQxwsFeie7uSGFwNBdpTBYmFUMhm/civQvqQS1ChloJs8qQ/cybmfom\nFZv3af5nQQghhCRRX6uJkIDRXPHKPwCjoVhQZWisdNlRAOhpT2FwNAvPKDsaJhUrIDvOkKFqmGoh\nQ2aVIdeJPvNmpp7JvpPgYyWEEEIAUBCQCSLO0Aei/QOUUkXC4ZhlM3H+EQsj+7o7UkEOQXxSsQ4Z\nsgOF/v7cQ3DdB1+5r28FQJUJyJPgf5l+D2mnkEPQCqvi9RQtpthogUdBCCGEJDIhZUcJSfQQBHie\nwljeK6oM9IXzD0V7Khpq1N2ewtCoTir294WNimNChvSx95+8/z69B5MpFzIUvIe2lGPkENT3fdWi\ncRsbkxFCCCHlmQRrl6QVSPQQGCFDo2Pl8weAQBBk7BwC/5hSCAVBPTsBV2MM19twngj0e/AFQeuE\nDE2UqT4JPmJCCCFTGAoCUjfMUqNx/QVM8l4hXGhaW8EjEBduU0gqNsqOotCpOJtXSLv1tdCmmiAI\nPQSuO2EegppUGZqgpOKpjIicLSJPi8haEbks5riIyDeC44+KyFHGsRki8gsReUpEnhSR2sT0EUII\nqQoKAlI3PGOFPilkqGDIF7wIpiCISwrtMTwEEhqnCMfJeawyVGtMD4FYXplmpq6iRRI3pgwi4gL4\nFoBzAKwC8FYRWWWddg6AlcG/iwF8xzj2dQA3K6UOBnA4gCfrPmlCCCFFUBCQupE3FMHoWB7f++M6\nvP7bd0fOiYQMBaLBLE8aZ0vrpGLPKy47mg88BCnXQUfa/3r3dqZr9p7m9rQH85pqVYb8nxOZQ1AL\n6tqHgEnFAHAsgLVKqXVKqTEAPwVwgXXOBQCuVj73ApghIn0i0gvgZADfBwCl1JhSas9ETp4QQogP\nk4pJ3fCMkKGcp/BPNyUv/uWVQjbnn9+eKk4INmlzXeQ9hZynYDfJyua94BzBaQfNw2fOOwQXHru0\n4jlfcdFRWDqrK/H49R88Afeu21VVE7PJUGVIa7t2I4egFYxgJhXXnUUANhjbGwEcV8E5iwDkAOwA\n8N8icjiABwD8jVJquH7TJYQQEsckMFVIs5IzPAReQoZvJBnY8435aIWgYlNL2+L5GA/BWNDYLOU6\ncBzB+161P7rbK9e9Zx/Wh1ULpyceXzJrGt58zJKKxwMmR8iQ/izbgucKtIiHgDkEzUwKwFEAvqOU\nOhLAMICiHAQAEJGLRWS1iKzesWPHRM6REEKmBBQEpG6YIUNJFX/C/gGeCs9vMzwEcUanNkhzniqy\nyrJ5f4x65xBUQysYzuXIB2LNrDLUCtS3MZnEvp5ibAJgKuTFwb5KztkIYKNS6r5g/y/gC4QilFJX\nKqWOUUodM3fu3JpMnBBCSIHmsZrIpMMzBUFRm7Aofux/jIcg5lxzxd00Th0BMrlCyFCz0EoGdBJa\naJk5BOU+02Zgoh5963/C4+bPAFaKyH4i0gbgQgA3WufcCOCdQbWh4wH0K6W2KKW2AtggIgcF550B\n4IkJmzkhhJAQ5hCQupE33AJeQtVRbVR6CsjlC2EpmlgPgcS/FhFkgsTkVBN5CCZDyFDeDBkS7dVp\n5Iwqo54r95Ecgtb/iMeFUionIpcCuAWAC+AqpdQaEbkkOH4FgJsAnAtgLYC9AN5jDPHXAH4ciIl1\n1jFCCCETBAUBqRteBTkEerdSCjlPx/+Xrt4S9QpEPQQ6h6C5QoYaPYN9J2eEc5mVoerBklmdAICe\njn2vDlXfKkMEAJRSN8E3+s19VxivFYAPJ1z7MIBj6jpBQgghZaEgIHXD9BAk2Y7aqMx7KtZDoI3P\nWz56cigYnITYbYEYgqB5zLXJEF8el0NQr07Qn3/toTjlwLk4YsmMfR5r4qoMtf5nTAghZOpCQUDq\nRr4KD4GnoqvQGm18HrSgJ9wXzSEwBhPE5iGQfScXk0NQLw9BR9rF2Yf11WSs+uZvsA8BIYSQyQGt\nJlI3zBhzL8F2NEOG4oz58jkEVsgQBUFd0OLO7EOQ9Jk2E3WVAxQBhBBCJgm0mkjdyBmKIGk12QwZ\n0kZnOiZkyMRsChZ1EAgy2eI8BLLv5AxBYHaFbnomqA8BxQEhhJBWhoKAVMRoNh9JEq4EL5JDUFoQ\nRKoMpapIKnbiPQRt9BDUFC3u2lwX+tEmfabNBGP7CSGEkPLQaiJlyeY9HPzZm/HFX1dXIjxvhAwl\nmY56v6dU2Km4XNlRV+IFg4g0ZZUhzdJZ0xo9hXGTj+QQFJrJNTv1TSqOJrQTQgghrUrzWU2k6dAr\n99fe/2JV10WSihOMRy9MKi6EDKXKNCaThBwCQaHsaLOFDN36sZPxq0tPavQ0xo2Z8N1KOQT1TCpm\nyBAhhJDJAqsMkYqp1v4zQ4ZM41EpFa6uqjBkSIXdcMslFSdVGZJIp+Lm0roHzOspf1ITk5/APgS1\nZMLKjlIQEEIIaWGay2oiTYnuJlytIkgqO2qKg2gOQaHWvaa8IIj2JNA5BM3mIWh1skZuRr37ENSS\n+hYd5XeMEELI5ICCgJTFC/VAdRZgUmMyL2a/56lCWIppzMfYXGKJAE2zdiqeDOQjIUP+PnoIjNcU\nBy1DKyTDE0LIREOriSQynMlh+8BoaPhV+3c0yUMQFQeF47nYkKHicV1JChkqJBU3W8hQq2OWHdWV\nnVohh2CiukQzZKh12LM32+gpEEJI00GriSTy2m/ehWP/+TaooFpQtfZfVBDAeF1cjtTvVOxBJBoS\nFGfQOQkOBAGQyeUB0ENQa845bAEA/7keuWQmAGDVwumNnFJFTJSdTj1ACCGklWFSMUlk3Y5hAIVQ\noWpDRMzKQma4UVz4kOf5ScVpxykKA7KJ9B6wxIO+ZVe7W9VcSWm+/KbD8enzDoHrCM4+bAH+dNnp\nWKeZq04AACAASURBVDijs9HTKks9PQT0ChBCCJkscBmVlCXMIag2ZCghTChOHPhlRz2k3Gg0dlxS\nsZ1IXHhd+NnVRq1bS9pSDub1dITbrSAGgIlLKqY4IIQQ0spQEJCyjDd5NKkPQVKVoWxewXUk1itg\nYkYDmefq191tqYjngExdJiqpmEFDrcMz2wYbPQVCCGk6KAhIWcYrCMqVGgUKHoK8Ush5HtKuHTJU\nbGglHdcrtt0d9A4Qn7o2JmMfgpbk/vW7Gz0FQghpOigISFnGW6UvKF0PoFSVIV3ByK8ylHLE6kRc\nPG5ylSH/Z3c7BQGpPyw12pro5oWEEEIKUBCQstQiZEjFVBYCCpWLPM8vbekLgtJVhpKqEOnVYHoI\niGbi+hCQVmEok2v0FAghpOmgICBlGW+9+eSyo+ZrfyOvFHJ5DynXsZKKi8eNehCKT6CHgGgmahV/\novodkH3nuR1DjZ4CIYQ0HRQEpCzeOBVBPpJDEO8h8LzCvqynkHIlsYqQxo3kDRRwgm9zDz0EJKCu\nHoKE16S5ufPZnY2eAiGENB0UBKRuRPsQGPvNEqRGlaF8TA5BHNE+BIX9YVIxPQQkYKKSigkhhJBW\nhpYTKUtNyo6WySHIewo58ZBynLJlR52kKkNhUnF6XPMlk4/6Gu3sQ0AIIWRyQA8BKYu5ov+bR7eg\nf2+25PmDo1n86pHNJRqTmWMXuiBn8wppV8rGfUcrC8XkEDBkiATUtTFZJKmYioAQQkjrQkFAypL3\nCmX6PvyTB/E3P3uo5Pl/d92j+OtrH8KTWwbCfV6Ct0DvzuY95D2FlOuUteLMKkOmOBjN5gEAXW1u\n6QHIlGHCcgioBwghhLQwFASkLDkrqXjTSyMlz9/aPwoA6B8peBKSqgzp8KHhTB7ZvBd0Ki7nIYgP\nGdIhSmmXX2viU8/qP6wsRAghZLJAy4mUJZevLocgFWT6mg2AEnMIgpdDmRxyng4ZKo2T0JhMC5d0\nil9r4kOTnRBCCCkPLSdSFttDUG5hVIf0jBmCIE4EAAWhMDia8/sQOE6kclAc0eOGhyAQLulyWclk\nylBXD0HkPnW7DSGEEFJ3KAhIWcwcAqB8AmXKjQoC15HYZmT+a//n4Gi20Km4zPhuOQ8BQ4ZIwIQl\nFVMREEIIaWFoOZGy5L3y55jYHoKUI1Ao9hD86bmdYZ5BJudhzeYBpNwq+xAYJ+cC4cKQIaKpb1Ix\nRQAhhJDJAS0nUpZclYpAr+CPBdelXSfWQ/C2790HILrKf9x+s8uutpoiwKw4FHoIGDJEAiaqMRm/\ncYQQQloZCgJSlvHmEGRyfhnQtpQTySGwhsP0zkIjsb86ab+yxpUZMmSGB+lbMGSITDSMGCKEENLK\n0HIiZcnbFnwZtEGeyRZChqJpCNHxpnf4gkD3Dyi3qmseTrvF56Zi9pGpyUQZ6gwfIoQQ0spQEJCy\nZKsMGXJCD4EHRwJBUNJD4HcW1h2GK/VAAPAbmVm00UNAAurbh6BuQxNCCCETCi0nUpZqPQQpI2Qo\n5TgQSa4yBAA97b6HoLs9EARlxjc9CHHGP5OKiaae6SSm2KA4IIQQ0srQciJlKc4hKFg/96/fjW/d\nvjZyPGV4CFzHrxqU1IfAROcSlE0qNr616VRMyBCTiklAPUN5JOE1IYQQ0mqkGj0B0vyU8hC85bv3\nAAA+fNoB4b4wqTjrIeUIHJFI1oDtITi4rwcLZ3Tir0/3xyhbdtQ4IRXTxYxJxURT17KjVASEEEIm\nCRQEpCy2h6AcZpWh9s40HImKANtD4HkK//6Ww8PtcknFbrmQIQoCElDXxmTG6EwqJoQQ0srU3XIS\nkbNF5GkRWSsil9X7fqT22J2Ky6ENck8h9BCYmsIWBJmc3QnZpz0hF8CJJBUXG2JxlYfIFGWiPASE\nEEJIC1NXQSAiLoBvATgHwCoAbxWRVfW8J6k92byVQxBzjhlWZFYB0jkE0SpD0fHGLEGgo4B0krGN\nmSIQ5w2gh4Bo6tmYzITigBBCSCtTb8vpWABrlVLrlFJjAH4K4II635PUmEqqDJmlSc2k3pTj+DkE\nZsiQdW2xh8C/flq7G3svU3AwZIiUor4hQxNzH0KmKtUFqxJC9oV6W06LAGwwtjcG+0gLYfchiFsN\nHTPOsT0EjkQbk9keAlsQaOuqqy3JQ8CQIVIZ9exDYKqAut6HkCkG/zcRMvE0fClVRC4WkdUisnrH\njh2Nng6JoRIPQc4IK4pWASoOGVJFgiAf2dbXJ4cMFcaPDRliHwISMFFJxYQQQkgrU2/LaROAJcb2\n4mBfiFLqSqXUMUqpY+bOnVvn6ZDxUNyHoPgc04ugEM0nsBuTlUsq9oKTuyrKIYjxEMSUIiVTk3rm\nEJhDUxoQQghpZeptOf0ZwEoR2U9E2gBcCODGOt+T1JhKPARmYrB5uh8yBJjRoPZwdlLx8FgOQLKH\nwAxJigvVYMgQCZmYiCEmFRNCCGlp6tqHQCmVE5FLAdwCwAVwlVJqTT3vSWpPJX0IzHPM8KCUKxBE\nPQTlcgiGM74gmNYWn1RcLl7bZadiElDfxmTsQ0AIIWRyUPfGZEqpmwDcVO/7kPph9yGIM34iiccR\nD4EDKFWyMZmdQzCU8beTQobKwQRPouE3gRBCCCkPg62nKEopHPLZm3H1Pc+XPTdn9yGIsbJe/dU/\nYv3OYQCWhyA2hyA63pzu9si2bki2cEZH2bkRUop6ikNJ3CCEEEJaCwqCKYqngJFsHp+7oXwEVyUh\nQwBw6xPbwrE1OodAqWgOgd5eNnsavv32oyLjXPiKJfjS6w7DX524X0X3JSSJekaPRZKKKQgIIYS0\nMBQEU5RcEAZUiSFTSVIxUIjdNx0AKd2HINKYTIWi4Y1HLS7yEKRcB+84fhlSbDBG9pF6xvabY09l\nPSAiZ4vI0yKyVkQuizkuIvKN4PijInKUddwVkYdE5NcTN2tCCCEmtLimKNrIr8SQsRuTJaEFgWn8\nu7oPQaQxWUGQMAGY1JO6rtzzqwsRcQF8C8A5AFYBeKuIrLJOOwfAyuDfxQC+Yx3/GwBP1nmqhBBC\nSkBBMEXRYUCV1Gm3PQRJVxQ8BHE5BNEqRHrMFAUBaVGiIUNT9nt8LIC1Sql1SqkxAD8FcIF1zgUA\nrlY+9wKYISJ9ACAiiwGcB+C/JnLShBBColAQTFHyQaLwvoYMmddr494823UcP4fAvEgVBAk9BKSe\n1LUxWcLrKcYiABuM7Y3BvkrP+RqATwIo6YZkR3tCmoentw7ia7c+0+hpkBpDQTCJOfnLt+PkL98e\neywXhgyVN2WKkooNI8s0uOJChnQOgbI9BHl6CEj9maiF+6nrIBg/IvIaANuVUg+UO5cd7QlpHt70\nnT/ha7c+i5GxfPmTSctQ9z4EpHG8uHtv4rFw1b8CQ6ZUlSFHAP0rQZ8VqTLk6qTiwj7P9BDUMHH4\nzk+ehpEsf0GRAnVNIaAKAIBNAJYY24uDfZWc80YA54vIuQA6AEwXkR8ppS6q43wJIfvIWL7yoiSk\ndaCHYIoSVhmq4NzixmTGa+M3gu5XYFcZEoHVmKw+OQRLZk3DgfN7ajYeaX0mqg/BFO5U/GcAK0Vk\nPxFpA3AhgButc24E8M6g2tDxAPqVUluUUp9SSi1WSi0Prvs9xQAhhDQGegimKPkqkoqz+dIegsJ5\nvnBQVpWheA8BqwyR+lNfD0H866mEUionIpcCuAWAC+AqpdQaEbkkOH4F/E715wJYC2AvgPc0ar6E\nEELioSCYooQ5BPuYVGwKCi0IinMIoiKhXh4CQmzqaahPYa9ABKXUTfCNfnPfFcZrBeDDZca4A8Ad\ndZgeIYSQCmDI0BSlVB+CXUOZyHbpHAJTEBSHDLmOU1R2VIFVhsjEUNeQIX51CSGETBIoCKYo2TAp\nKGrVPLJhD47+x1tx/YMbw31FOQTGJXEhQ56VQ+B7CAr7on0Ixv8V7G6ng4tUxokHzK7r+BQHhBBC\nWhlaVFOUJA/Bms0DAID71+8O9+WsHALzGscxk4qDHAKj64AjCDwEhWs8VRhzvB6Cez51Oqal+fUl\n5fnD/zsV83o66noPhg8RQqYKyTEDpJWhRTVFScoh0N6AlCvGvhKNyYzXYzEhQzlP1SWHoK+3c1zX\nkanHstlddRmXScWEEEImCwwZmqKEHgLLksnmi0N5siUEgXkoF5NUnMuroMqQKQiMKkMuLSnSmtAr\nQAghZLJAQTBF0SE7xR6C4pX74hyCwjHPUASFsqOI7CsuO8oqQ6T1iXgIGjcNQgghZJ+hIJgkKKXw\n+Kb+is83cwjGch6e3jqIkbE8nto6CCC6cv/4poHEccwKRDpkyPQGZD0V05iMVYZI65PUoI8QQghp\nNSgIJgnXPbgJr/nPu3DrE9sqOj/sVCyCz93wOM762h/x1u/di+uC6kLpCqv/5CPhQcUeglzgIahH\nlSFCGokpAigHCCFThXr+vvvDMzuwfWC0jncgSdAamyQ8vdVfxV+3c6ii8wudioF71u0CADy8YU94\nvNTKvXkk7ym8+4TlWNjbUQgZQjSMiB4CMhnhN5cQQmrLu666H6//9p8aPY0pCQXBFMCs8KMphPpI\nUVlRoHRsv14Y1dWCpnem0dnmhsnHZspBNi6pGKpQzYiCgEwCGDFECJkq1Lvs6KY9I3W+A4mDgmCS\noMMX4iqfxHUazhtlR+PKiqbc8l8NfZkrgrTrIJsrrjKkPQR5Q3TUog8BIY0mWnaU32NCCCGtCwXB\nFCDOA5AzkopzVhUhoLKV+zAPwA0EQRgyFL23IxLJNYjkELDsKGlRKAIIIYRMFtiYrAlYt2MI2bzC\nQQt66jJ+1vPQCTeyT4fsbB/MhPtECgnBlazcF/IQBGlXkPMUXtg1jCc2F6oSZT0PjgB5Q3OYOQQM\nGSKEEEIIaSz0EDQBp//7H3DW1/5Yt/HzcR6CmH2OWTWlhJ2uw5L0qn/KEaRcB2M5D6d85Q5s2jOC\nRTP8TsJvfcVS30NgeCGUUhgZywMA2lMuCCGEEEJI46CHYAqQjQkJissbcEWQDwJ+4o4XjRGICscR\ntLkORrL58Njs7jbcfdnpAICHNuyJjOcpYGtQVmze9PYq3gkhhBBCCKk19BBMAUrlEJiYXoGYwkRF\nRD0EEuYQ+GNFvQ2mIFBKYUv/KOZ0t9FDQAghhBDSYCgIJimeYYDHrfbH7TNDhvIlFIHuM6CTkR3H\nTyoeyxmCIDIurKRiYGv/CBb0dpR/I4QQQghpHupdd5Q0BAqCSYLuNaCN9bxV+tMmzkNgJhJ7pQRB\ncEhHIqWCkCFzTDNX2BGJ9CbwAg/BgumdyW+IEEIIIYRMCBQETcytT2zDs9sGi/bvGMzgFw9sDLfX\n7xzGb5/YFjnH9ADE9yEoFgmmEe+VyCHQYkF7CFwpDhkyvQ122VHAzyHoo4eAEEIIaS2meHHAkbE8\nPnLtQ9g+ONroqdQUJhU3Me+7ejUA4PnLz4vs/8A1q/Hgi3tw0gFzsKC3A6f92x3hMV0ByFzhrzSH\nwDEUQYxTIcSzPASuI0g5hcZkgN20qVig7NmbxezutuSbEEIIIYQ0Gb96ZDNufGQz2lMOvvLmwxs9\nnZpBD0ELsm3A7x0QFwqkiRrgMVWGypQdjfMgaJTtIXD8PgSmF0AsD4GJzjVIV9ANmRBCCCGE1Bda\nZC2Itq9LVQIy7flshR4Cc4U/7rhGH9FeCNcRuI5ERIidVGyiBUEbBQEhhBBCSMOhRdYCKMvyDwVB\niVR/0ytQaZWhsXzpazSFHIKCIEg5YiUVJ3sIMjm/X0HaneKBiIQQQgghTQAFQQuwZ282sh12Ci5h\ntOcjOQSVVRkyBUEpD4HWGnnP9BA4kTAkx/xmJXgIUvQQEEIIIa0Fy45OSphU3KSYXoHN/SNYs3kA\nazb3o38kG67QP7FlALc+Ga0upKCglMJ/3rY23Je1jPsf3L0eD77wUsw9C68r8RCEgiCoMpSLhAyV\nyCHIM2SIEEKameWX/QZvPnrxpEqaJLVF6OSfVFAQNBF5T4W9AEyDvH8ki4u+f1/R+Zf+5KHYcXYP\nj+Gae18wxo16CL7wqyfKzqVUwrImDBlyY3IIjF8UKccOGdIeAv42IYRMDlY/vxv7zenC7O72Rk+l\nZvzPAxspCAiZInCJtonIJoTslCj4E4u9tm8mFZvdhOM4+cC56GlPhcb9p845uOgc7SHIGsnBfg5B\nfB+ClBP9mmVYZYgQMsl40xX34M1X3NPoaRBCyLigRdZEmCvsUXFQnSKwm4qZfQiGM7mS16YcgWMk\nCNvhPkChD4E+J+06cB2BeVvzsnSKZUcJIZOfdTuHGz0FMgG87lt34+3/dW+jp0FITWHIUBNhGu6m\nOPBK1ReNYcwK9zEFxVAZQeA6AsdoJBYXI6jno++TcqUoLMjcsnMFCoKAIUOEEEJai4c37Gn0FJqC\nKk0T0uRwibaJyBqGezYiDqocJ5/sIRgcLe8hcA0PgcQoAv1LwAwZcp3kr1JxDoEuO8qvHyGEkMmP\n5ylsHxxt9DRqA9fyynL1Pc/j3K/f2ehpVAUtsiYiqbtwqYo/NkoVlxkdyuTwoR8/gE17RiryEIhI\nmIgc9/9eWX0I0kEOQeQc43U6leQh4NePENIYfr56Ax6IqbZGSBKPbtwTW8a7Er566zM49p9uw7aB\nSSAK6Bkoy+duWIMntgw0ehpVwZChJiKSN2Cs6usV9UrIK1UUMnTdgxvx6MZ+CARvPHoRAKCvtwNb\n+ot/MaUcgSsS3t/uMgwUcgiyRsiQa51oapi05T3Q82PIECGkUXzyF48CAJ6//LwGz4S0Ao9v6sf5\n37wbHz5txbiuv+3J7QCAHYMZzJ/eUcup7RMDo1lM70g3ehqkCeASbRNhioCcVXa0UnwPQVS+bw0M\nf0+pMGTomvceh7cdtxQA8I7jl4Xnuo4TCRlyYhRBWGUouE+b6xSVEDX7KDCpmBBCSCujw32e2Nxa\nq76luPGRzXj5F36Lxzf1N3oqpAmgRdZEmCLAdEv2761cEOQ9VdRDYPtgBv+/vTMPk6I69//37WUW\nGFZBQAEHE0QxmqjEXeMuGm+8S3736r3GaEyM0fyiSYzBq2Y3mmiMcd+NK664IiAIiKLs67AMDMM2\nwMAwMPt0T3fXuX/U0qeqq3qt3t/P88xD9amqU+cU1dXve94NUJUF3WVoQJXPyEZUIbn0+DwEouhY\n7F2G1H/jWQhkrII/1yFgGIZhmPzy2aYWAKWl5DDpwwpBnlEc4gbStRAoNi5D8r4uzUJQU+kzVvpl\nhSBaZEyLIbANKtYtBNGVfmsMgZwZyVqHoE8KRmYYhmEYhmHyC0tkeSYiZKuA/XZKCoEiTOcePrja\n2BZQLQREQL8Kr+HnLwvmPg/BI8UQ2KcdVf/VXYb8NlmG5NIJFewyxDAMw5QA6cbT2v2WMkwhwRJZ\nnjFnFpIKk0kSdVtKFgJzcLJJIRBq2tGaCh+IyHD9MVkILHUI7AuTWS0EsXUIhPTaZJchhmEYppgh\nzrXJlDisEOSZiEPcgNweCKWWZUiuQzC4XzR7gBACwXAEVRVe4zNgrhNgWAikGIJpN56Op6+eZBxj\nVCqWXIbiZRmyugzpcQzsMsQwDMMwxYXgvKMlCUtkeUZ2GZIFeacUpIlQhDmouFoT/gHV1BmKCPg1\n4V1f6fd5ZQuBR4shiFoIThw7BBdOHCFdRa9UHFUorBYC+X1hdRnS8bFCwDAME5c73lmLo+6Yke9h\nMC4hhOo2e89HG9ARSN76zzDZJiOJjIj+HxGtIyKFiCZZ9t1ORA1EVE9EF2c2zNIlYqpIbB9DYM0a\nFA/FkmWon6QQ6MqCXihMv5ydhUDvI34MgQK/Vy1kZrUQxHMZirazCZZhGCYeryze4ZgogilO3lu1\nC08uaMRfZ27M91AKltauIGqnTMf0NXvyPZSyIdMl2joA/w5ggdxIRBMBXAHgWACTATxGRN7Y0xmT\nhcChOnEohUrFEcWsTFT5JQuBVqNAF9CjFoKoYO71EDye6PXtsgzp54UjitGXNR4gnsuQDgcVMwzD\nMMWEyNBbhqQYvVC4OF1vchFP0bCvCwDwwhfbUjpvY3MHaqdMx9b93VkYVWmTkUQmhNgghKi32XU5\ngNeEEEEhxFYADQBOzuRapUoyVoFUSqVHFMVU2bjab3YZ6osohkVAf7HJlYT1SsVRl6HYa+ipUkMR\nYfRlzTIkFyZzchlihYBhmHxw5VOL8j0Epthgg3ZRMG3FLgDAx+ua8zyS4sOXpX4PByC/cZu0NsaC\nrBBEHOoQpOIy9MKX202fTQqB5jKkZxXS3Xpkdx+v5gLUqGnXdi5DHYEwaqdMx6hBVUZfsXUIotuy\n4D+gyofOQBgeQtxiZgzDMNniy8bWvF17TVMbvvPIQrz9k9Nw0hFD8zYOJj9kamFgmGyRcImWiOYQ\nUZ3N3+VuDICIrieiZUS0rKWlxY0uiwqTa5Bch8DBcpAq1ZYYApPLkKZnyO4+Po85HkBOOzrzlrNw\nyrjoD9ie9oDRV0wMgVyYTFIIBlapWY/YOsAwTDny2eb9AIBPNuzL80iYXMJ1CHKDcFHjuvzRhZi2\nogkAcMEDn+Ifcza71nchklAqE0JcIIT4ms3fe3FO2wVgjPR5tNZm1/9TQohJQohJw4cPT230JYC5\nDoG9m1AmAWXWGALZZUiPX/Bbsgw5LdwfPXIgjh89yNSmKxOxdQiiyMHDA6p8MddkGIZhSpemgz34\n68yNKQtrhbiaXoBDyjm5TDua7rXcUMBW72zDL95YDUCNafj7nE2Zd1rAZEsqex/AFURUSUTjAIwH\nsCRL1ypqnCwB6WYZsiLn+lesLkMi1mVIzzKkYy1MZg0ydrIQKNKbXI5RGFitWghk5YdhGKZQeeiT\nzZhXz6v5mfDTV1fisflbsH5PR3InFOBqultD4hz+yWGX0CQZClGJLBYyTTv6b0TUBOA0ANOJaBYA\nCCHWAXgDwHoAMwHcJIRIvrpWGSELzk6VijNxGfJIgnpEMbsM6Zf2Sl88r4dMmnWsQmDuXxf2rZmE\n5C+l3ye7DKkWgkCIFQKGYQqfB2ZvwrXPL833MAqKqUt24GB3X9LH92nV6ctZWCvkSsdvLt+Z82sq\nikDdrna09fThvPvnY/PeTlf7L+T7XahkmmXoHSHEaCFEpRBihBDiYmnf3UKIrwghJgghuKqKRjAc\nccwsFI4oUBQRc0wmFgLZlacvrCAkuQzpyogsy/s8BHnx3qoAWBUEv5ZByJp21KQQSPv0GAKGYUoD\nIpqs1ZtpIKIpNvuJiB7S9q8hohO19jFENI+I1mv1bG7O/eiZVNm0txO3T1uLm19fle+hFBWFbBlY\nuu1gzq/55IJGXPbw5/jbx5vQuL8bj85ryPkYGDPsyJ1jJtw5E9e9EF1tUiyVil9fthNn3DvXWFHR\n29NlSP8KYzsYVtAnFSY7etRAAMDwmirjGK+HTNYJazyB9bNRhyBJl6FhAyrVcfVjxYBhih2tvsyj\nAC4BMBHAlVodGplLoLqNjgdwPYDHtfYwgF8KISYCOBXATTbnliyFKx7GR/9tau0K5nkkxQmvXKus\n290OANjV1utqv8X6vSoEspV2lLFBz98/vz6aTUl2EwqGFTTu78L+rj709EWkY9QX8MvXnYI97b34\n1VtrkrreOzeejkMHRoX9voiCcEQYcQW/vPAoXHDMoThOChSu9HtN1gmr56T1ZaYL+/FSiMpuS9/5\n+mE4Ycxg1A7rn9QcGIYpaE4G0CCEaAQAInoNah2a9dIxlwN4UahBS4uIaDARjRJC7AGwBwCEEJ1E\ntAFqeur1KEP+7bGFGFztx/PXFmbJno5ACDPrmjFRW0jKJ4FQBMu2HcSZ44fl/NqZZrEpZEtBPnAz\nK5BMIWZ1CoYjqPB60o6PyDZsIcghrTY+l7Lw3RuKoLk9AABGcbEKr8ewEBw3ehAG96uI6cOJE8YO\nMQUVW12GfF5PTB7sar/XZJFIaCHQXYYsMQSKw5d89JBqXHLcKBxTAD8qDMNkzOEAZAdku5ozCY8h\noloAJwBY7PoIi4SVO9owr75wU29PeXsNbntrDdY0ted7KPjT9PW46tnFxiqzHbVTpuMPH7inW2Yq\nxBW7ZaC3L4K73q1DVzBstGUiyyd7P1O9RqHGqexq68WEO2filcU78j0UR1ghyCG6sC8jKwTBUAR7\ntGP0oNtKn5wSlGJ89RNR6bcqBMIU5Gulyu8xFUizfmmtn3VFwOu1ugzZ9z+oml2FGIaJQkQ1AN4G\ncIsQwjYNTbnXqykEWjpVF6FAKP/5QbbsUwtntveE4h733MKtuRhOWfDCl9vw0qLteHx+bnz9C3QR\nPW22acVeP1q7J88jcYYVghyyu131lZOFfCcLQSAUAZE5WNdD5jSiyWCyEERUC0G8Pqr8XlOgc6yF\nwD7taEwdAgc1vVBNZQzDpEUyNWccjyEiP1Rl4BUhxDSni2SzXo1ujS0muoJh/PHD9QUhnDPlgS6r\nOC32JeL91bvR3hvCrHXNeOnLbUZ7gS7olyWsEOQQXdgfIrn9yApBe2/IcCtauaMNQqiFwnQ8RCkX\n9JKF/7aeENp7QzHCu0y132uKa7BilecrNJehmErFKY2SYZgiZSmA8UQ0jogqAFwBtQ6NzPsArtay\nDZ0KoF0IsYfU1YFnAWwQQjyQ22FHuXlq8WXLeXjuZjz7+VZMXeKO+4GiiLjuN4VKJr8zDfu68rJa\nW6guLdnk43XN+NnUlfjF66vw45eW46731mXNgapQYzSK4f+dFYIcsq9TVQj6VUarB0ekp2Rba4+x\nrRdwkeV/D6XuMuSxEf4Tuww5pzy1dufzOFkIYvseM7Q60XAZhikihBBhAD8FMAvABgBvCCHWEdEN\nRHSDdthHABoBNAB4GsCNWvsZAL4H4DwiWqX9XZrbGQCzN+zN9SUBZCYg6FbcSLrLtRaeWLAF337o\nc6zYkfv0k+nghqH5ggc+xY2vrEj+mhler1SM4+k8t9e/tBwADJfoTPtLhkL1RijQYQHgLEM5xfrX\nlwAAIABJREFUJajFBQSlolyyv77uY6bzh8uPxRPztxifPWQuIubEc9dMwoljhzju98exEFT6vCYl\nIBg2KwTWL5le9TjGQmD5li+/8wJU+b1gGKa0EEJ8BFXol9uekLYFgJtszvscBVmTNrsUokCwbpe6\nALW7rTfubwfDuEWy34NU9YVCXYkvVMuFDFsIcojuiiP7rOqyd4XXg/Zec4DUEYf0N63we4iS+hIN\n7ldhm43o61p60XhuR9UV5rSjVoXAGkOgKwQxlYot/R5SU4n+lax/MgxT3NROmY6/fVyf72FkBTth\nKhW3mnBEwTsrm4wU25mSqChnoQp/dhTTWOORK4U2Y4uMK6Nwn0LONsUKQQ7p015uvX2yQqC29a+M\nXT33e8i08u7xUIxAbodT0HCltkIf32UokYXA/lpWC4FT2lGGYZhi5+G5ucm0skNyI80q2ut79c42\ndAbMC1OpuNU8v3Abfv76ary1vMmVYVkXyXQK0cpSLrj9015oksKDczZh897OfA8jL7BCkEPCmqAd\nCMsuQ+q//SpiV899Xo/hIqTL28m8CJ0sAJU+e39/mSqfJyYVqoz1VKc+lfgLOwzDMCXNb9+ry1gw\nlqvaA8CB7j7UTpmOD1bvBqDGENz1bh3eW2VN7JQez3y+FT/W/L3TYb9WvfhAT2zNnVIhXYG4EJWY\nVMYkH+uGUpDt2/GHD1OvQdEZCOHBOZvxn09+Gfe4dNx/imGNlBUCFxFCYFFjq2PKzZAUCBaKKNjb\nEUC9ponW2LjT+LxkuAzpK/DJmJucAo91H/6KOBYCn9eDUBouQ3bBywzDMOXKC19ux61vrs6ojz6L\ny8yWli4AwD6tJsA9MzbipUXbcfNrmWVKkt/eToXH9J+FRG48QGrCz5OfbsHlj3ye/AnydbK8vjzl\n7TX480cbABSmQF8MfLhmt7Ftdw/dqFR8/6x61E6ZnnE/+kjk1Ot2/PrttWlfo5CfI1YIXOSVxTtw\nxVOLMGtds+1++eXeG4rgzL/MxUOfbAYQLdglPyw+DxkWAj2Yd9SgqoTjsHMZOmpEjaEQJEpdKlsI\nvllrrmQ8fEBl3GudpZWSZ5chhmEYZ7IpzAZCEbSluUrvJKAt365mIHr80y22+wGktex7z4yNWJ1i\n9eNc+WG/tnQnnlrQ6GqfxWY9mV+/L6P0tvXN9u431gQlyx0yXCWjMDwyL+rC54aCkQ0Kc1RmWCFw\nEX31pulgr+3+sKQQBEIRw2IAAGOG9gMAjBwYFfh9Ho+x8q4vwA/pX4H6P03GlSePdRyH1ULQcPcl\nmHHz2YZ7T6LFfF0h+GLKeTh5nFkhuPwbh+PL288zUojK1oZNf7oE9/7H8QCKwzzGMAyTC/rCCv7n\nmUV4cM6mlITZdMXe/356Eb7xh9nJXyeFZcu2BNWBAfeVnd1tvVibotJQSDzzWaNhebkphZiMeLy0\naDveWelOrEY8rnl+KW6flv6KeLKywM4DZrmpkFfSSxVWCFxEf/CdAn9lBSDQZza76haC0UOiufr9\nXjJ88+V0o5U+L/xx6hFYLQA+rwdeDxkKQV84OQd/p6xAowZVGz9qskJQ4YvGPLCFgGEYRuWRuZux\nsKEVD87ZnPQ5wXDEVJsmFVbsaEvrPCD9lcy5G/diVQbX1Zm6ZAdOvvsTU9vp987Fv2huRc3tASze\n2grAWdhMpT7DPTM2oCsYTvr4dJSdpz+LWhl6+uJXl75nxgZc/dyShH3e9W4dfv56Zi5pMq1dQdRO\nmY4vt7QmfU4y9+L91btt299Z6U7cixWWPNKHFQIX0V9C1ow7OrLvZXef+QVU5Vf/K0YP6We0eT0k\nWQjMfVrTfMo4uQTpLkPWuAAnKuPEGugCvzUeQR8mfykZhiklulMQGq20dKXuJvL4fLNrzv++sxY/\nedmd1WUrbizG/uCfy7B46wEAmVmI/5ggGHTyPxaYFtfs6A3FF7plnvy0EQ/O3pTwuFy5KT35aSMW\nbGrJybVkVu1UlTlZebFDpKgS7Wm395goFyb9aU6+h5A0rBC4iC4kO7nkyArBjgPmlR9dWDdbCDzQ\nDQFWo0N8C4H9Pl3ADyT5snRKXwpEX/jWYwyFgC0EDMMUOfdoAaUA8Ms3MlmNTf192BkwKyCvLt5h\nZPHJJvl6dTcdTM4akpTLUpxJ7GrrjbmP1uBttynk3PNW5m7cZ0qNbuXJTxsdLTD7u4JYtu2AqS3R\n85RPUeHGV5bjqDtmuN7vy4u2G9u5+M66BSsEcdjd1ovPNievqevfEWvGnelr9qAzEDKtajz72VbT\nMdU2CoHPG61DYLU66HECdsqHWxaCeJmD9BdCpaX6sMdwGUrqEgzDMAXLk1JA6eZ9zrnJ07IeSO/I\nhjh954JC8Nc+8y/zHOsOuMkZ984tqlXbfPDW8p1pnfdvjy3Ed59wTtmZznOWzUrFH61tzooyeOe7\ndTFtxbBIygpBHCY/uADfezaxL5+OXp1RXg2ob+7ETa+uwJRpaxGOKDhyeH8AwBJJi77rsok4etQA\nHDmsP2oP6W+0+zweQ8B2chk67+gRMeNwqjNw8bEjAQAXTRwZs++kI4bgjK8eAgD42XlfTTBTyWXI\nonwMrFJjIW65YHzCPhiGYYqJH724zLb9nhkbbNujRN/JdkLRpf9IL+1mNnAjIDhR2kYnevrCKa2l\nuyliKYrAr99ag/W7O1zstUhJU0O0BgYDmfwfFYCWmgVSCeDPNawQxKEjkNqqjy4k28UKNB3oQV9E\n4MhhNfjBGeOM/TNvOQvXnTkOZ40fjrm3noOaqmggr0+qVGx9iHS3oK8eWoNt937btM/pgZswcgC2\n3fttHDd6UMy+t39yOl754akAgF9cNCGmz9i5qv9a4wwqfB5su/fbuPq02rjnMwzDFAo3vLTc5B5k\nx5aWbsxev9d2X0dv9LdCCIF9nQHLEfHFomy5rGzd353UcW6LKH+fk9gnv9DY1daL15ftdFT6dNJZ\n6G3usD4P7pGsq1UicmGdscPtjFTZrk2RDkIII21vIcMKgYvoQrJtFh8ihCMKKnyESr+UmceaEUgK\nFja7DJm782kNCUoKZA2noGKGYZhiY+a6ZpN7UKrIazD//GJbTJYcmf2d8X2KX1q0HR871LKJx78+\nujCm7dz75+PNZTuxvTU5xQDIjk/3+j32q+51u8ypRLfsS36c2aK1O2j7G57Mwu5rS3ZgV1tug2jP\n/Ms8V/r51Vtroh9sHoJ04yBkV5l9HcXjT+8mLy/ajofnqrUSCtc+wApBUihJOsTrQrK82mOcK9Tq\nxD6Px6QEWH3w5VgBvzeey5B9e65ghYBhGCaWhQ374+5/5vOtcfff9W4drn9pecrXXbWzzXZ1+1dv\nrcFlD8d3SZKtym7pA1tauozMNU4stQSgXvXs4pRcKrLhlx0IKfjpq6lnc+oOhjFl2lpc+dQi18eU\nCxKlak135V0+a5+NMlxIrvX/kNICu/lsbWnJv6KbDCzNJUEkyQcjrH2h5KDdQCi6HYoI+L0ec+7+\nGAtB9GXo9ZCj4F9hFBnLk0Kg2McQMAzDlBvyW3jOhn15G4eTS1NnIIzNe5MPXD7YnXk13fP/9qmt\n1SITNjhYGtzmY4f7GA99keyAC/euEMnF6n5PX6ybdqpyeSZy/LMJlPVSh6W5JIgoAl3BMB6d1xBX\niw5q6Tz7wgoWN7Zizvq90RSfRAjpLkOWYl4ysoXAJ9chsLoMeTwxx+cS/TawhYBhGCZ1cr0weuHf\nFyR1XCii4IQ/Jl/lOF0OdPeh6WBi95p9kv/9dx//IptDSgongfMfKRSdK0YWNSZfsEwmFQH9i4bo\nNQo49tZgdVPqhfgKeV4szSVBWBG4b+ZG3DerHjPq9jgeF9AsA31hBf/11CL88MVlpgIphsuQJERb\ng3J9Ug0BIjIq/8a4DHnN6UhP/8ohOGxQFc4/+tB0ppgy7DLEMEwpkEpVWycSublMXZJeGsdssWFP\nB+6evt5wi5BHnysXjtPv/cR2RdZ6J89/4FNj22qtz6VS9dbyJgDAlw6CcSJXMDsKMQAWsL+vydYv\nSvla0sXk6/77Y+kpf7m8o5v2dqV97pz1e1E7ZTqa27MXcJ4qvsSHMJGIQKeWZzpe2fGAtq8vEj1G\n/hKFdZchr7PLkHXF3+vgMuT3mttf/dGpyU3GJZzSjjIMwzCFzX89+SU6AmHcdO5XMbhfRV7GILvT\nxkMu0JbsOdlgUwouV4ko5FXiVCgk/383Ecj+3KYu2QFADawfOagquxdLEpbmkiCsKMZKfbxAk0A4\n6jJktEkKQV9Egd9LplV1a/Evn8U3yHAZsrxAoi5Dyc7CXRRtilYLB8MwTLkRT76rnTI9Z+MAgEfn\nNSR9rJE5Jk0BNRCKJLSwXPfPpSn1qeRBykz3ku09IVcVBTdRFIE/f7QhZyvQ6cZOyFaSTAN5recn\nm3Y327hhhcwFLM0lQUQRxkp8vHTRuvDfIkXSm4OKlZigYisxFgLtYyILQa5hlyGGYRiNDF7DIYcf\nlc5Aennh75tVn/I501bsSutaR981E/9/6gp8ESez0icbo0HWjfu78YN/Lo3rftIdxwofQ5Jy1htL\nd2JPe2bpQNfZFCz718cW4iJLbEZXOlWrs8Cy7Qfx1IJG/OKNVTm53n8/nZ3sSqmI0o37u/Hq4h3G\n5905TgHrRNhGIZhbn7/kA06wNJcEYUUYQb3xVi/0eIHtB6KFQvQXn6IIKAIxLkNWrFWGPR5zrED0\nuDxnGWKFgGGYEmNtUzsa9nWhtSuYcFUvGHbHp3p/l332ljeWNbnSv8wnG1LPnpOIj9Y247+fWZzU\nsT+buhJzN+6LSTfqNnIRqPbeEG57ew3+J8kxpoIbK9APfFyP2inTXXuedPTfaDthNBtsbM6/peRX\nb6523BdRBF5dvMNRAY+H/H+TTgYuWUwjAMu2HShIdyuOIbDw1vImVPk9uOz4w4w22UJg/T9cueMg\nHvpkM648eaxhDdjeGlUI/jZbrdi4VivA4rO4DFmJtRDYVyq2BhXnGiPLEMcQMAxTIvzLI9F8/def\nfWTcYyfcOROf//pcjB7SL62iTUII/O79dYYvcS647oVlWDjlvJxdL19c83zUTUl3I2ntSj8dqJPS\n5gYvfLkdANDbFzGl9lzU2IpTjzwk7X6TUVbi6QotnUE07Es/aDYdMpWRV+xwzvrzxrKd+N931qK9\nN4SfnPOVmP0LNrUY213BsGksE+6caWy7kYHrYE9+qkInghUCC7dqGqasEIQlhcBapGz2+r2YV98C\nr4fQo5kK460sVSRwGbJaCPSKxFa536+350khePsnp+H9VbuN8TEMw5QSyVQL3rq/G6OH9Eur/6c/\ny0/O8zPunWtsN7Tkf1U3E3KVpWfSn+Zkre/2XlU43NbaY4r/uOKpRdh277fT7vf2aWvVjTi3yMnj\noaUziG/ePcckq6RSMC4VFjVGrUXZWjUPRRTjfrT1xCqGOw/04OrnlmTn4jB7FFrvYyEZClghSIKI\nohgr8Vaznu4m1HSwNynfR5+X4gbiWlf8/Q6WAF1x8ObJZeikI4bipCOG5uXaDMMw2WabZOl1Ql/p\nK9asMf/x+Jf5HoIrBEIR7O0I4IhD+qPb4sP/8Tr33aSywf2z6lHl95rahBCuCuLb9ndj095OXHTs\nSOxq63WMHanTPBrkBCnZqAqdK5ZuNbuobW/tRqNkQem2KYiWDo/Oa8D5x8Smfi+W9wMv70o4BXGF\nFWH8h1rTnumfk/Ul9Hk9qPB6Hfdbv/y6JSCm3WdvOWAYhmFyw8+mrsz3EIqSdFys4vHLN1fjW/fN\nx5qmNhz721mmfbe9vQaAarl3yoTz3qr0gqrT5ddvr41p+7xhP+ZYYjwem78lrf63Ocgj5/1tPq5/\naTkA4MUvtjmeP6++xXFfNrENNs+CIvKt++bjWsmtzK3n8b5Z9fjOw7HVuV9elDu3wExghUBib4d9\neq5wRBhuQL2WB1Z/gIPh5AJVevvCKQXi+p1chjz5dRliGIZhgOXbDxhFq8oJu6w7uUaXFRdoAuwK\nKZjYSlcwjBMd/L87AmHcO3Oja+P6aK1zAdNUeH1pegXtdhywt25lEl+cLZchmVtez1JGpARDt5ta\nuhaRvgRBy3M37kNXMLr43HSwBzsd/r9yDSsEEnukfL3ywxBRhGE6s2qwqVbv29/Vl6JCYO8a5HNo\nZxiGYXLHE5825nsIWeePH67P9xDiovvC/+6D9Mc5fU36Qrw1c82Nr8RPxZosrWkGM6/aGQ2uLdRq\nyLng/o/VFLxuW6QyZb2kTP/+g/U466/z8jiaKGWvEExb0YT7tbzNskIQikS/RGFJIXh+4TZ8trkF\nVz+3BGub2mMUgiH9/HGvFwhF0rIQWL/Senu+sgwxDMMw5cGzn7sbAD2jzp0VdJ1IFtxKVu90zlgT\nc32bpXc9WDgTUqrJIPGAlt2wlJi6ZAeWbD2A37xXl3Tq0JVa1qFE66YsRamUfVDxzLpmrNvdgVsv\nnmCUSK/0eUxmn4giEJQ+f+9ZNRq9ozeEKr8Hh/SvQKvmm3hITWVMSqn/vfRo9PRFEAgp+PHZR6b0\n8tIFf2su4XHD+uOmc7+Cs8YPS2G2DMMwjJtsby2MaqjFxCuL3fGpFgJ4ekFjTGyfG1zzfPJZZ+wE\nzgWbW3DJcaPinpdMrYn23hC27e/G18cMdjzm+YVbce0Z4xL2pZNO9WI7oTmeJBMMRzD5wc9Svo4T\nRtYkAC9+uT2lDEyJBP5cO1rYiYA/fGEZnvn+pNwOxELZKwRdwbARTCxnEJKj68OKYvqsoysCtcP6\nGwrB0P4VMcddf7Y5521HChUodZcha7pTr4fwq4uPTrofhmEYxn027c1trnbGzN0fbchKv6nkiv9w\ndazFY3mceIZU+PrvPwYAbPnzpYZHwPurd5uO+f0H6x0VAjvhM93YBCs9wTC2tnTjuNGDYvbtPNDr\nSuE2N2w/6cQ/XPTggsQHacysa8aoQVVJH283J2tAeT4oe4WgMxBWi1CIqFuQgFkhkGMIZIb2r8Cu\ntl6MGdoPA6t86AiEcYhFIbB7DlMp5qVbCBJVzWQYhmEYJvf8Mk6FXLdQ4xoJHYFQxtmt/j4ndZei\nRhvh/oaXl2PFjjZs+MNkU/uqnW0YUFU44mU6FoDGluSVmRteXp76BQqQso8h6AqGoQigpy9iCP3h\niGKxEDgrBIFQBFV+L0YNqjbaZDw2T2IqCoEePMwKAcMwDMMUB26HNejdveNQO8CN1fhUWanFWYQU\ns3z08CebXfPL39rSHVNbIhV+NnUlggldynLrM+T0bPSmGTPiFmWvEOhxA13BsCH0K8KcXjQSEY6p\npAIhBdV+D0Zq5qJYhSD2nFRShRoWgiIuCsIwDMMwblPIv4puj21x44G4gvHlj3zu8hUT4ySWuDn3\nzmAYVz27OO3z31+9G7OkquNLth2IOSbnMQQOd+iY38zM7UAsFI5NJ0/o+WA7A2GT0C8XKXOyEATD\nCgJh1UJw2OAq1FT6YioNxvNdSyZDkG5NsMYQMAzDMEw58/Ns5a13ASEEmtsDOPWeT1zp76pnF2PM\n0Gr88Mwjbfd3BMJ45rNGHHuY2Z8/F5LDHe/U2Y7HLfRsQekii2F2fWWiD0xdknqAfKGu75a1QhCK\nKEZ2AtlCAJgDivQYgsMHV2NXW6/R3hdR0NunKgTXnF6Lbx11aEyBCSeZ/8nvnYQJIwbY7nv5ulMw\npL+avtRwGSrUJ4hhyphpN57O7nwMkye6MnAlyQVXPr3I1f52HuhFS6dzbYI/TY8NsHYruDkeH1iC\nnOdu3Ifxh9Zk/brJkmya0nT4x5zNKZ/zzzhVovNJWbsMyea3roBZITjQHf3ShRUFfREFJx4xBKeM\nG2q0B0MKgmEFVX4vjhxeg8lfGxlTY8AuhgAALj52JGqH9bfdd+b4YYaWz0HFDFO4nDh2CL5ZOzTx\ngQzDlBUC2fHrf2Reg+t9ZoPnF27L9xAMpi6Jn1UpkyrMiSoTp0rtlOlxlb5sUtYKQadk0uoKhky1\nBvQ0okDUQlDh9ZhcgnS3oip/9DZaFYJMKwn7OaiYYRiGYYqKVLLUZJtPN7Xg6QW5raid7QrJP5u6\nErVTpscUh02HTKS0A5Ks6BbfvHuO630mQ1m7DMnmxk6rhaAr+p8cVgSCYQUVPg+qJYVArydQ5Yu2\nWTMIZRqswhYChmEYhmHS5fvPJV9kzS0IhGxGMOi1GFKp68TEp6wtBLJCYI0hOBBjIYig0udBpWQN\n6OhVz6+ukBQCq4UghYxCdugKgcIxBAzDMAzDFAG5ytzz3srdiQ9ikqKsFILtrd2onTIdczeqFeG6\nAs4xBNNWRnP9hiNqrEClz2NaqW/vTewyNPGwgRmNmV2GGIZhGIYpJoI2mRmzgRuVqhc1trowkuKn\nrBSCFTvUaPu3l6vCfqfVQuAQHNLWE0IwrGBYTaVJMD/Yo1oRair9RpuuEPi9hFd/dAoev+qkjMbM\nLkMMwzAMwzDZYcq0tfkeQgz5SDVfVjEE1loCuoWASFUO+sIK+ld40W2pFtd0UE01OnJQFUKR6H9S\nj3ZcTWX0NlZqArwQwOlfGZbxmH0eVggYhmEYhmHKhYgQ8OS4gnJGFgIiuo+INhLRGiJ6h4gGS/tu\nJ6IGIqonooszH2rm7O1QUznp/vh6UbJhNZWGy1BNVayOtPOgWltg1KAqhLUS3XJowADpHN1C4JbP\nf4WP6xAwDMMwDMOUC0u3xlZUzjaZugzNBvA1IcTxADYBuB0AiGgigCsAHAtgMoDHiMjr2EuO2NMe\nABANGO4KhEEEHDqg0nAZklf7dWQLgb5S378iepx8jq4QuCW+G0HFuXHHYxiGYRiGYfJILgrKWclI\nIRBCfCyE0B3xFwEYrW1fDuA1IURQCLEVQAOAkzO5ViLaevrQ2NIFoa2kCyFiMgUt1gJHlm0/iGA4\ngs5gGDUVPgys8qOlM4i2nj5U+GL1lp0HezTFocqoeNevMnpcjY2FwK0FfZ+mEIRZI2AYhmEYhil5\nXlq0PefXdDOo+AcAZmjbhwOQS8M1aW1Z4zuPLMR5f/sUS7epWtWby5pw4h9nY/PeTgDAq4u3o1Gr\nGhhRBP48fQO6AmHUVPlQU+XD2l3tONgTwuDqaIDwQE3QF0J1K6rweXDC2CEAgLFD+xnHmSwEXnfj\ntPUsQxxCwDAMwzAMU/rkKm2rTELplYjmEFGdzd/l0jF3AAgDeCXVARDR9US0jIiWtbS0pHo6ANUa\nsOOA6uff2NIFAJi9QU0tunmf+nmLVjVw3q3ngAho3N+NzkAYNZU+DJAE+gkjB2DGzWfhs9vOxfxf\nnWsI5KMGVQEAfnnhUZh5y1k4eqSaTtTvJVT6nNOOZorfU1aJoBiGYRiGYZgckzDLkBDignj7iega\nAJcBOF8Iw1FmF4Ax0mGjtTa7/p8C8BQATJo0Ka118IM90Up1u7U4AR29+Njutl5MGDEA44b1x+Rj\nR2Lzvi6MHFhlWAh0PEQ4ZlS0doDXQwhFBEYOVBUCn9eDo0cONAT/mkofSFLlXFcIXO6PYRimHJl3\n6zk49/75+R4GwzBMQvQkOLkk0yxDkwHcBuA7Qogeadf7AK4gokoiGgdgPICs1c7e095rbDdr27pu\n0qwpCM0dAYzUVvlHDqpCc3tAjSGo9MEjCfRtvdG4AyCa9vOwwdWmdkMhsGQlqvS6GzutWygYhmEK\nESKarGWTayCiKTb7iYge0vavIaITkz3XTcYN65/N7hmGYYqaTJefHwEwAMBsIlpFRE8AgBBiHYA3\nAKwHMBPATUKIiHM3mdEsWQX0TEKtWkCx/nlPe8Bw+xk1qApdwTCa23sxsMqPbqlAmRyIDACBkDps\nXZnQ0WMF5GxDALsMMQxTPmjZ4x4FcAmAiQCu1LLMyVwCdVFoPIDrATyewrk5455/P871GDCGYZhi\nIaPCZEKIr8bZdzeAuzPpP1l0of+EsYPR2NKN2ev3YqcWU7B+dztmrWvG/q6gZCFQV/v3dgRRU+lD\nRyDqcmRVCMJaNO8oq0KgCf6VFgXAbYXA42ELAcMwBcvJABqEEI0AQESvQc0yt1465nIAL2oupYuI\naDARjQJQm8S5rjL752fjwr8vAAB89dAavHfTGehXoVp1iQhXnjwWABCKKFjT1IYPVu/BpNoh6F/p\nQ31zJ+6dsTFbQ2MYhskrJVGpuLk9AK+HcMq4Q/DEp1vwoxeXGftWN7Xjxy8tBwAcObxG/VcyHY8Y\nVIXjRg/CjLpmAMA5Rw039T1iYCX2dgRx5LAaU/vwmkoAsa5EXk2Av+z4UW5MzeCiiSNc7Y9hGMYF\n7DLKnZLEMYcneS4ANfkEVOsCxo4dm/Zgx48YgNW/uQgDq82xX1b8Xg9OOmIoTjpiqNF27oRDccO3\nvgIAUBSBvogCr4cwbUUTAiEFwwdU4kB3H+58tw5D+vlx2OBqrNvdkfZYGYYpX75lkUVzQUkoBNee\nUYsLJ47AMaMGGoI4kZoadHurainwez0Yf6gq1H/t8EGYd+s56A6GMWHkAPg8hEu+NhIeIgyU0o4C\nwIybz0ZbT5+hTOh896TROH7MIBwxNNYvdfVvLzJWndxgze8uQrU/73XdGIZh8oIbySd0BvXzJz4o\nAR4PocqjvpP/65tmBeWqU4/IuH+GAVTFUyC60Ci36/qsEEBIUdDWE0JrVx8q/R5U+b04fHA1hBDo\nCoaxq60X63Z14KzxwzCsphJ9EQUVXg+I1DTsoYhAbyiCar8XilbDaU1TO+6duQG3XXw0Lpw4AlV+\nLyKKAAFQhIDP60E4oqAzEMYby3aiOxjGf35zDEYOrILXQ1AEcLCnDxU+D2oqfCBSPS52HOhBdzCM\nQdV+jBhYhSpJthFCIBBS4PcSIkIgoghUeD1o6w3B7/VgQKUPnYEwAuEI6na1Y3A/P/pV+BCKKDhy\neA2CoYjRn9/rQTAcQUcgjLpd7Rh/aA38Xg/ae0NYueMgzj9mBPrCCsKKgsaWbnxj7GCFA/tuAAAH\nwElEQVRU+rwYpMmAgVDEuEcyRAQhBIgIvX0R7GnvxdD+FegNRdDRG8bu9l4E+iKoqfLhuMMHwe/1\n4EB3H/Z3BfGNMYNjFiL0vvT/V0UIeIjy4h1Cwq0KWi4wadIksWzZssQHMgzDlCFEtFwIMSnf49Ah\notMA/E4IcbH2+XYAEELcIx3zJID5Qoip2ud6AOdAdRmKe64d/DvBMAxjTya/ERxBxTAMw6TLUgDj\niWgcEVUAuAJqljmZ9wFcrWUbOhVAuxBiT5LnMgzDMDmgJFyGGIZhmNwjhAgT0U8BzALgBfCcEGId\nEd2g7X8CwEcALgXQAKAHwLXxzs3DNBiGYcoeVggYhmGYtBFCfARV6JfbnpC2BYCbkj2XYRiGyT3s\nMsQwDMMwDMMwZQwrBAzDMAzDMAxTxrBCwDAMwzAMwzBlDCsEDMMwDMMwDFPGsELAMAzDMAzDMGUM\nKwQMwzAMwzAMU8awQsAwDMMwDMMwZQypKaILAyJqAbA9zdOHAdjv4nCKkXK/B+U+f4DvAVDa9+AI\nIcTwfA8in/DvREqU03zLaa4Az7fUSXe+af9GFJRCkAlEtEwIMSnf48gn5X4Pyn3+AN8DgO8B40y5\nPRvlNN9ymivA8y118jFfdhliGIZhGIZhmDKGFQKGYRiGYRiGKWNKSSF4Kt8DKADK/R6U+/wBvgcA\n3wPGmXJ7NsppvuU0V4DnW+rkfL4lE0PAMAzDMAzDMEzqlJKFgGEYhmEYhmGYFCkJhYCIJhNRPRE1\nENGUfI8nGxDRc0S0j4jqpLahRDSbiDZr/w6R9t2u3Y96Iro4P6N2FyIaQ0TziGg9Ea0jopu19rK4\nD0RURURLiGi1Nv/fa+1lMX8dIvIS0Uoi+lD7XFbzZ9KjWH4n3HzPEdFJRLRW2/cQEZHWXklEr2vt\ni4moVjrn+9o1NhPR93M474y/18UyXyIaTERvEdFGItpARKeV6nyJ6Ofac1xHRFO137GSmSu5JJu5\nOT8iGqcd26CdW5HUZIQQRf0HwAtgC4AjAVQAWA1gYr7HlYV5ng3gRAB1UttfAUzRtqcA+Iu2PVG7\nD5UAxmn3x5vvObhwD0YBOFHbHgBgkzbXsrgPAAhAjbbtB7AYwKnlMn/pPvwCwKsAPtQ+l9X8+S+t\nZ6ZofifcfM8BWKK9IwjADACXaO03AnhC274CwOva9lAAjdq/Q7TtITmad8bf62KZL4AXAPxQ264A\nMLgU5wvgcABbAVRrn98AcE0pzRUuyWZuzk+7z1do208A+ElSc8n2g5+DL9ZpAGZJn28HcHu+x5Wl\nudZaHrp6AKO07VEA6u3uAYBZAE7L9/izcD/eA3BhOd4HAP0ArABwSjnNH8BoAJ8AOA9RwaFs5s9/\naT83Rfs7ke57Tjtmo9R+JYAn5WO0bR/UAkgkH6PtexLAlTmYY8bf62KZL4BBUIVksrSX3HyhKgQ7\noQqtPgAfArio1OaKDGUzN+en7dsPwKe1m9598f5KwWVIf+B0mrS2cmCEEGKPtt0MYIS2XfL3RDOb\nnQB1lbxs7oNmVl8FYB+A2UKIspo/gAcB3AZAkdrKaf5MehTls5Dhe+5wbdvabjpHCBEG0A7gkDh9\nZRs3vtfFMt9xAFoAPK+5SD1DRP1RgvMVQuwCcD+AHQD2AGgXQnyMEpyrhXzO7xAAbdqx1r7iUgoK\nAQNAqKqgyPc4cgER1QB4G8AtQogOeV+p3wchREQI8Q2oK2onE9HXLPtLdv5EdBmAfUKI5U7HlPL8\nmfKiXN5zZfi99kF1MXlcCHECgG6obiUGpTJfzXf+cqhK0GEA+hPRVfIxpTJXJ4ppfqWgEOwCMEb6\nPFprKwf2EtEoAND+3ae1l+w9ISI/1B/JV4QQ07TmsrsPQog2APMATEb5zP8MAN8hom0AXgNwHhG9\njPKZP5M+RfUsuPSe26VtW9tN5xCRD6obS2ucvrKJW9/rYplvE4AmzboLAG9BVRBKcb4XANgqhGgR\nQoQATANwOkpzrjL5nF8rgMHasda+4lIKCsFSAOO1qOoKqEEX7+d5TLnifQDf17a/D9XXVG+/QotO\nHwdgPNSAlaJGi7p/FsAGIcQD0q6yuA9ENJyIBmvb1VD9ijeiTOYvhLhdCDFaCFEL9Xs+VwhxFcpk\n/kxGFM3vhFvvOc1loYOITtX6vNpyjt7Xd6F+lwRUf+WLiGiItrp7kdaWNdz6XhfRfJsB7CSiCVrT\n+QDWozTnuwPAqUTUTxvj+QA2lOhcZfI2P23fPO1Y6/Xjk40Ai1z/AbgUaiaGLQDuyPd4sjTHqVB9\n8EJQVxiug+or9gmAzQDmABgqHX+Hdj/qoUWrF/sfgDOhmt7WAFil/V1aLvcBwPEAVmrzrwPwG629\nLOZvuRfnIBp8WHbz57+0npmi+J1w8z0HYJL2rtgC4BFEi5FWAXgTQANUJflI6ZwfaO0NAK7N8dwz\n+l4Xy3wBfAPAMu3/+F2oWWJKcr4Afg914aoOwEtQM+yUzFzhkmzm5vygZlNborW/CaAymblwpWKG\nYRiGYRiGKWNKwWWIYRiGYRiGYZg0YYWAYRiGYRiGYcoYVggYhmEYhmEYpoxhhYBhGIZhGIZhyhhW\nCBiGYRiGYRimjGGFgGEYhmEYhmHKGFYIGIZhGIZhGKaMYYWAYRiGYRiGYcqY/wNH1EQzuTsA/QAA\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fb6ad1e81d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_frames = 1000000\n",
    "batch_size = 32\n",
    "gamma      = 0.99\n",
    "\n",
    "losses = []\n",
    "all_rewards = []\n",
    "episode_reward = 0\n",
    "\n",
    "state = env.reset()\n",
    "for frame_idx in range(1, num_frames + 1):\n",
    "    action = current_model.act(state)\n",
    "    \n",
    "    next_state, reward, done, _ = env.step(action)\n",
    "    replay_buffer.push(state, action, reward, next_state, done)\n",
    "    \n",
    "    state = next_state\n",
    "    episode_reward += reward\n",
    "    \n",
    "    if done:\n",
    "        state = env.reset()\n",
    "        all_rewards.append(episode_reward)\n",
    "        episode_reward = 0\n",
    "        \n",
    "    if len(replay_buffer) > batch_size:\n",
    "        beta = beta_by_frame(frame_idx)\n",
    "        loss = compute_td_loss(batch_size, beta)\n",
    "        losses.append(loss.data[0])\n",
    "        \n",
    "    if frame_idx % 10000 == 0:\n",
    "        plot(frame_idx, all_rewards, losses)\n",
    "        \n",
    "    if frame_idx % 1000 == 0:\n",
    "        update_target(current_model, target_model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
